问题标签 [input-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 投票
3 回答
5676 浏览

php - 特殊字符打破mysql插入

我有一个这样的mysql语句:

如您所见,非常简单明了。问题是当我在表单中输入特殊字符时,它不会将数据插入到我的表中(使用 phpmyadmin 直接检查是否已插入)。例如,如果我在评论文本区域中输入此值:“这是一个评论”,如果我输入:“你叫什么名字?:John doe 是我的名字”它会中断。我知道它是因为 mysql 使用字符......关于我应该做什么的任何建议?

0 投票
1 回答
195 浏览

java - 在 RoR 中为程序生成的 java 清理字符串

我正在编写一个 Ruby on Rails 应用程序,它通过用户输入将生成一些 Java 代码,然后服务器将编译并执行这些代码。(不要问为什么;)

问题是用户能够输入需要在 Java 中用作字符串文字的字符串。我以前将字符列入白名单,但这种方法为用户提供的灵活性不足。如何清理 RoR 中的字符串,以防止用户终止字符串,从而能够在服务器上执行任意代码。

0 投票
1 回答
287 浏览

html - 隐藏表单元素上的 htmlentities

这似乎是一个愚蠢的问题,但用户输入的清理不断让我感到困惑,我希望一劳永逸地得到一个明确的答案。

所以这是场景

  1. 客户填写网络表格。
  2. PHP 检查必填字段是否已正确填写,如果没有填写,则不会让客户继续填写。
  3. 如果是这样,则用户输入将显示在屏幕上以供确认,同时输入数据也存储为隐藏的表单元素。
  4. 然后客户确认输入,然后将隐藏的元素发送给进一步处理。

使用直到最后一分钟才应转义数据的原则,这将如何应用于存储在第 3 点的隐藏元素中的数据。(显然,此时打印在屏幕上的数据我也应用了 htmlentities())

我是否应该在隐藏元素上使用 htmlentities,但这在技术上不是最后阶段,因为在第 4 部分之后,我将再次使用变量,然后将它们粘贴到数据库或电子邮件中。

我完全意识到我可能做错了,所以任何想法都是非常受欢迎的。^_^

0 投票
3 回答
12065 浏览

php - 在用户输入上调用 json_decode 是否安全?

我在 cookie 中存储一个 JSON 编码的整数索引数组 => 整数值。

显然 cookie 可以像任何其他用户输入一样轻松操作,所以这是我的 cookie getter 验证:

然后在使用任何值之前,我检查它是否存在于数组中并针对白名单值列表进行测试——这部分看起来很安全,但我将其发布为验证的一部分:

回到问题,直接在cookie上调用是否安全?json_decode用户可以操纵 cookie 来运行任意代码吗?

到目前为止,我一直在阅读关于 SO 的许多主题,我发现它unserialize()是不安全的,因为它调用构造函数,但json_decode在技术上是安全的。我已经阅读了他们的 php.net 页面,但这些页面并没有直接解决安全问题。

我的插件很快就会进入实时测试版,所以我想知道json_decode直接调用 cookie 是否足够安全,或者我是否应该在调用json_decode. 我也可以运行 a preg_match,但是当我在使用它们之前针对值的白名单进行测试时,应该没有问题,除非json_decode以某种方式运行任意代码,它不会,对吧?

我知道如果它不是有效的 JSON,它会json_encode返回NULL,但我想知道这是否是正确的方法,或者我应该在调用之前添加某种验证json_decode

抱歉,如果这是一个太愚蠢的问题,我只是对 cookie/JSON 的经验很少,并且不希望成为我们服务器数据库丢失的罪魁祸首。任何帮助/信息表示赞赏。=]

0 投票
2 回答
1600 浏览

php - 清理表单数据

在使用 HTML/CSS 构建网站后,我只是在学习 PHP 和脚本的基础知识。我正在尝试制作一个提交到数据库的简单表单,只是为了收集电子邮件地址和姓名。以下是我正在使用的基本代码。我对它进行了一些调整,但没什么大不了的。我知道我需要清理这些数据,并且我已经阅读了数十篇关于如何执行此操作的帖子、文章等,我只是不知道如何向其中添加 escape_string 或 PHP 函数。我以为我做到了,我已经尝试了几十种方法,但是当我测试时,它们似乎没有任何区别。我知道这样做只是我的新手无知,但我有点拉扯我的头发,所以任何帮助都会很棒。

@rwhite35 这是最终结果的样子吗?

0 投票
1 回答
38 浏览

file-upload - 从用户输入文件路径中删除前导“/”和禁止“../”有多安全?

在用户提供的文件名的任何部分中剥离前导“/”并禁止“../”仍然被认为是“安全的”吗?还是有一些(想到utf-8编码)的方法?我不是在问是否可以在每个文件系统上创建文件名。我想保留尽可能多的用户输入。

0 投票
1 回答
300 浏览

php - PHP; 编码和解码函数产生相同的输出

清理一些用户输入;

$_POST['data'] 设置为;

这个的输出是;

为什么最后两个产生相同的结果,而第二个是发布数据的一部分?由于最后两个似乎产生了预期的结果,我应该使用哪个?

谢谢你。

0 投票
1 回答
606 浏览

php - PHP:如何清理离开 UTF-8(俄语、土耳其语、英语)的用户输入?

干净的用户提交了意外或故意垃圾的输入。我写了以下内容来做到这一点,并且有兴趣看到针对同一问题的更有效或更好的解决方案。 注意:我在 mysql 方面使用了mysqli 准备好的语句。


第一种情况: 用户应该能够输入UTF-8(只需要俄语、土耳其语、英语)字符和'_',(这是为了清除用户输入的'用户名')

输入:


为了清理这些我写了这个简单的函数

它返回我需要的东西;



第二种情况:只允许使用英文字符,应删除无效字符和其他 UTF-8 字符。(这是为了清理用户输入的“电子邮件”)

输入:

由于这部分是用于电子邮件的,并且应该只接受英文字符,所以我编写了以下函数来清理和验证;

通过以下方式调用时:

返回我需要的东西


ps

- 我不需要在此电子邮件输入字段中完全符合 UTF-8 / RFC,也不需要包含所有可能包含在电子邮件中的特殊字符。我更喜欢限制更多,并在最初的问题中说明需要什么以及函数的作用。这里的想法更多的是摆脱错误输入的字符而不是验证电子邮件,在一个在线站点中,我宁愿不更正任何东西,而只是抛出一个错误。


- 更新了干净电子邮件功能中的正则表达式以包含 + 和 - 字符。

0 投票
4 回答
465 浏览

php - 在使用explode()、strpos()、substr()等函数之前是否应该对用户数据进行清理

不要成为一个偏执狂,我想知道是否直接将客户端输入与字符串操作函数(如explode()、strpos()、substr()……)一起使用可能是一个安全问题。

两年前,我记得读到其中一些函数使用了一个对特定条目敏感的库,并且它可用于创建新文件等......

我找不到关于OWSAP中提到的任何内容

如果是这样,哪个版本的 PHP 受此影响?

编辑 我还没有找到确切的答案,但是这个 stakeoveflow 问题与我的 问题很接近

0 投票
1 回答
122 浏览

php - 可以将表单输入直接加载到 DOMDocument 类中吗?

我构建了一个接受任意 HTML 的工具,收集所有类和 id 并将它们输出回页面。我担心安全问题。我一直在使用 HTML Purifier 过滤输入,但我需要支持 HTML5,而 HTML Purifier 不支持。

这是该工具的要点:

我的问题是:

似乎有人可以将这样的字符串放入工具中:'<div '); do_bad_stuff( 'ha_ha_ha'最终$doc->loadHTML($html);会说$doc->loadHTML('<div '); do_bad_stuff( 'ha_ha_ha');

当我尝试输入这样有趣的业务时,似乎 DOMDocument 只是错误,但我应该做些什么来防止恶意输入吗?如果不是,为什么不呢?

其次,htmlentities 是否足以清理输出?