-3

我在数据库中存储表单以及表单处理脚本、javascript 验证脚本和表单 CSS,eval()用于 PHP 代码,所以我的问题是我需要htmlspecialchars()htmlentities()

无论如何,我正在使用mysqli_real_escape_string()并且nl2br()你不会警告我如何eval()安全使用或等等等等,这不是这里关心的问题,问题是如果我不使用eval或者html会像它已经发布在数据库中一样去而不是我需要使用这些功能,或者在这种情况下它们不是真正需要的?evilhtmlspecialcharshtmlentities<<&lt;

4

1 回答 1

0

通用答案:当上下文发生变化时使用转义函数。

将纯文本字符串放入 SQL 时:Escape for SQL。

将纯文本字符串放入 HTML 时:HTML 转义。

将纯文本字符串放入 URL 时:URL 转义。

当做上述不止一件事情时:以正确的顺序进行所有转义,并真正尝试找出您是否没有错过上下文更改。

演示问题:

开始

$param = "foo";
$url = "http://www.example.org/newpage";

结尾

<a href="javascript:location='http://www.example.org/newpage?param=foo';return false;">Link</a>
于 2013-01-15T09:04:19.327 回答