0
4

2 回答 2

2
于 2013-08-10T16:25:04.367 回答
1

消毒是一个棘手的主题,因为根据上下文,它永远不会意味着相同的事情。:)

real_escape_string只需确保您的数据可以包含在请求中(当然是在引号内),而无需更改请求的“含义”。

手册页解释了该函数的真正作用:它转义 nul 字符、换行符、回车符、单引号、双引号和“Control-Z”(可能是 SUBSTITUTE 字符)。所以它只是在这些字符之前插入一个反斜杠。

而已。它“清理”字符串,以便可以在请求中原封不动地传递它。但它不会从任何其他角度对其进行清理:用户仍然可以传递例如 HTML 标记或“奇怪”字符。您需要根据输出格式(大多数情况下是 HTML,但 HTTP 不限于 HTML 文档)以及您想让用户做什么来制定规则。

如果您的代码无法处理某些字符,或者它们在输出格式中具有特殊含义,或者如果它们导致您的输出以某种方式出现“损坏”,您需要自己转义或删除它们。

您可能会对htmlspecialchars. 控制字符通常不是 HTML 的问题。如果您的输出编码与您的输入编码相同,它们将不会显示,因此不会成为您的用户的问题(嗯,可能是 W3C 验证器)。如果您认为是,请创建自己的功能来检查和删除它们。

于 2013-08-10T16:30:11.627 回答