2

我从数据库中读取用户配置文件并显示它们。在我向他们展示之前,我通过 php htmlentities 使用 HTML 清理。它正确地显示了它们。但是,虽然允许用户对其进行编辑,但它显示为双重过滤。

echo '<input id="about" name="about" value="'.$php_filtered_value>.'">';

然后在输入中,&符号看起来像&amp; 如果我不过滤变量,则担心 html 注入。

我应该怎么办?

4

2 回答 2

0

我更喜欢遵循 ​​OWASP RULE#2:

>  RULE #2 - Attribute Escape Before Inserting Untrusted Data into HTML
Requirements:
-Aggressive HTML Entity Encoding
-Only place untrusted data into a whitelist of safe attributes (listed below).
-Strictly validate unsafe attributes such as background, id and name.

请参阅XSS(跨站点脚本)预防备忘单

于 2013-07-13T20:29:46.980 回答
0

然后不要双重转义文本(如:在将其存储到数据库之前一次,然后在回显它之前再次转义)。

  • 未转义(您输入的内容):Able & Baker
  • 转义一次(存储在数据库中的内容):Able &amp; Baker
  • 双重转义(最终出现在您的 HTML 中):Able &amp;amp; Baker

相反,只对文本进行一次转义:通常在输出端,而不是在输入端。

于 2013-07-13T20:52:06.763 回答