我有这个代码作为在线游戏的反html和sql注入,但它没有工作,并给我以下错误:
Fatal error: Only variables can be passed by reference
这是我的代码:
$_POST = str_replace('<', '>', '\'', '\'', '\\', '<', '>', '"', '' ', '\', $_POST);
$_GET = str_replace('<', '>', '\'', '\'', '\\', '<', '>', '"', ''', '\', $_GET);
这两行中的第一行,但我确定问题也适用于第二行。我不擅长php,这些是我从网上获取的文件。 我该如何解决这个问题?
答案 0 :(得分:1)
您不需要实施自己的XSS过滤器,因为已经存在one
你可以通过这种方式利用这一点:
$_POST = filter($_POST);
$_GET = filter($_GET);
function filter(array $value) {
return is_array($value) ? array_map(__FUNCTION__, $value) : htmlentities($value);
}
这也将过滤嵌套数组(如果您的输入类似于name[]
)
答案 1 :(得分:0)
也许是这样的:
$post_vars = array();
for ($i=0; i<count($_POST); $i++)
{
$post_vars[$i] = str_replace('<', '>', '\'', '\'', '\\', '<', '>', '"', '' ', '\', $_POST[$i]);
}
$ _GET数组也是如此。