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');你觉得怎么样?