Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在输入时使用htmlspecialchars,然后在输出时使用htmlentities是否多余?_Php_Xss - Fatal编程技术网

Php 在输入时使用htmlspecialchars,然后在输出时使用htmlentities是否多余?

Php 在输入时使用htmlspecialchars,然后在输出时使用htmlentities是否多余?,php,xss,Php,Xss,我被告知数据库的输出是基于输出的双转义,例如' &;引用&;lt 因此,htmlspecialchars($content\u to\u escape,ENT\u QUOTES)用于插入,然后echo-htmllentities($content\u to\u echo)冗余?将输入存储在数据库中 或者,您可以在服务器端验证输入,以禁止使用某些字符。例如,对于街道名称,您可能只允许字母数字和-、和'字符 然而,为了防止XSS,重点应该放在输出编码上。每次输出时使用HT

我被告知数据库的输出是基于输出的双转义,例如
' &;引用&;lt


因此,
htmlspecialchars($content\u to\u escape,ENT\u QUOTES)
用于插入,然后
echo-htmllentities($content\u to\u echo)冗余?

将输入存储在数据库中

或者,您可以在服务器端验证输入,以禁止使用某些字符。例如,对于街道名称,您可能只允许字母数字和
-
'
字符


然而,为了防止XSS,重点应该放在输出编码上。每次输出时使用HTML编码函数。当您需要输出到另一个上下文(例如,JavaScript的十六进制实体编码、JSON编码等)时,将原始输入存储在数据库中会使事情变得更简单(因此也更安全)。

将html放入数据库时,您不需要转义html(除了通常的sql注入保护)。这种转义只能在输出上进行,因为使用转义的目的(和类型)完全取决于如何使用输出。e、 g.如果html永远不会以可以呈现为html的方式使用,那么进行html转义就毫无用处。如果要将其放入数据库,无论如何都不应该使用
htmlspecialchars()
。您应该使用PDO,它将正确处理加载。您仍然需要在输出时对其进行清理。我正在使用PDO,bind param。所以,不要逃进数据库,逃出来吧。我决定使用htmlspecialchars($content,entu QUOTES,'UTF-8');你觉得怎么样?