问题标签 [sanitization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
6478 浏览

xss - Markdown 和 XSS

好的,所以我一直在 SO 和其他地方阅读有关降价的信息,并且用户输入和数据库之间的步骤通常给出为

  1. 将 Markdown 转换为 html
  2. 清理 html(带白名单)
  3. 插入数据库

但对我来说,执行以下操作更有意义:

  1. 清理降价(删除所有标签 - 没有例外)
  2. 转换为 html
  3. 插入数据库

我错过了什么吗?在我看来,这几乎是防 xss 的

0 投票
4 回答
2655 浏览

php - PHP - 清理逗号分隔的字符串

什么是清理用户输入的最有效方法是完全由数字组成的逗号分隔字符串 - 例如

2,40,23,11,55

我在很多输入上都使用了这个功能

在简单的整数上,我这样做:

所以我应该把它分解然后用上面的代码检查数组的每个元素,或者用''替换所有出现的','然后检查整个东西是一个数字吗?你们有什么感想?

0 投票
2 回答
411 浏览

mysql - 清理生产数据库以用于测试

我正在构建一个本地虚拟机来进行 Web 开发,而不是使用我们的现场开发。我需要一个本地数据库,但我不想只是拉下一个生产数据库并使用它,因为它包含的信息虽然不受 HIPAA 或任何东西的保护,但在笔记本电脑被盗的情况下不应该可用。是否有任何应用程序或推荐的做法来清理这些数据,以便我能够拉下数据库、清理它并将其安装在我的虚拟机中?

澄清:我真正想要的是一个应用程序,它允许我将特定列标记为敏感列,并在我导入数据库的新副本时打击这些列。

0 投票
5 回答
3032 浏览

php - PHP / MYSQL:清理用户输入 - 这是一个坏主意吗?

我有一个“go”脚本,它可以获取任何其他请求的脚本,这是我为清理用户输入而编写的:

我还没有看到其他人使用这种方法。有什么理由不这样做吗?

编辑 - 修改为适用于数组:

0 投票
5 回答
1077 浏览

php - 简单的 PHP $_GET 清理问题

我有一个记录编辑链接,它获取一个 7 个字符的字母数字文本字符串,该字符串的结构始终为 ZZZZ111,然后在 MySQL 查询中用于提取该记录 ID 的所有相关数据。

mysql_real_escape_string()我只需要对它进行消毒吗$_GET['id']?还是有更多的步骤来保护我的数据库?

0 投票
1 回答
100 浏览

python - 我的 makeValidFilename 函数可能出现错误?

它的灵感来自“如何从任意字符串生成有效的 Windows 文件名?” ,我编写了一个函数,它将采用任意字符串并使其成为有效的文件名。

从技术上讲,我的功能应该是对这个问题的回答,但我想确保在将其发布为答案之前,我没有做任何愚蠢的事情或忽略任何事情。

我把它写成tvnamer的一部分- 一个实用程序,它接受电视剧集文件名,并将它们重命名好且一致,从http://www.thetvdb.com提取一集- 而源文件名必须是有效文件,系列名称已更正,剧集名称 - 因此理论上两者都可以包含任何字符。我不太关心安全性而是可用性 - 这主要是为了防止文件被重命名.some.series - [01x01].avi和文件“消失”(而不是阻止邪恶的人)

它做了几个假设:

  • 文件系统支持 Unicode 文件名。HFS+ 和 NTFS 都可以,这将覆盖大多数用户。还有一个normalize_unicode参数可以去除 Unicode 字符(在 tvnamer 中,这是通过配置 XML 文件设置的)
  • 该平台是 Darwin、Linux,其他一切都被视为 Windows
  • 文件名应该是可见的(不是像 dotfile 这样的点文件.bashrc)——如果需要,可以很简单地修改代码以允许.abc格式化文件名

我(希望)处理的事情:

  • 如果文件名以以下划线开头.(防止文件名. ..和文件消失)
  • 删除目录分隔符:/在 Linux/:OS X 上
  • 删除无效的 Windows 文件名字符\/:*?"<>|(在 Windows 上时,或强制使用windows_safe=True
  • 在保留文件名前加上下划线(COM2变成_COM2NUL变成_NUL等)
  • Unicode 数据的可选规范化,因此å变为a和不可转换的字符被删除
  • 在 Linux/Darwin 上截断超过 255 个字符的文件名,在 Windows 上截断 32 个字符

代码和一堆测试用例可以在http://gist.github.com/256270找到和修改。“生产”代码可以在 tvnamer/utils.py中找到

这个函数有错误吗?我错过了什么条件?

0 投票
9 回答
26232 浏览

php - 在 PHP 中清理文件路径

问候,我希望让我的小程序安全,以便潜在的恶意用户无法查看服务器上的敏感文件。

在我的脑海中,我知道诸如“../../../../../../etc/passwd”之类的输入会很麻烦,但想知道我应该期待哪些其他恶意输入以及如何防止他们。

0 投票
4 回答
1987 浏览

php - 如何使用 PHP 在白名单中允许 HTML

我知道多年来有很多关于使用 PHP 过滤数据的最佳方法的讨论,但我想在我当前的项目中采用白名单方法。

我只希望用户能够使用以下 HTML

谁能告诉我在 PHP 中执行此操作的最佳方法?我过去只允许所有 html 减去某些代码

0 投票
2 回答
2157 浏览

code-analysis - CAT.NET“在将文件路径传递给文件系统例程之前对其进行清理”消息

我正在使用 CAT.NET 代码分析分析我的代码(C#、桌面应用程序),并在处理文件名时收到“在将文件路径传递给文件系统例程之前对其进行清理”消息。我不明白的是,为了确保文件名有效,我使用:

解决无效文件名问题不是“神奇的解决方案”吗?我在这里读过类似的东西(第一个答案),但就我而言,我只处理本地文件,嗯,一些非常基本的东西,所以......

那么为什么我会收到此消息以及如何避免收到此消息?

0 投票
2 回答
2156 浏览

ruby-on-rails - 清理用户正则表达式

我想编写一个函数,允许用户根据正则表达式匹配数据,但我担心用户字符串的卫生。我知道对于 SQL 查询,您可以使用绑定变量来避免 SQL 注入攻击,但我不确定是否有这样的正则表达式机制。我看到有Regexp.escape,但我想允许有效的正则表达式。

这是示例函数:

由于我只是直接匹配,tag.name是否有可能有人可以插入 Proc 调用或其他东西来打破正则表达式并造成破坏?

任何关于最佳实践的建议将不胜感激。