尝试回显可能被污染的字符串

时间:2013-03-28 10:14:28

标签: php

我收到错误“尝试回显可能被污染的字符串”,错误行是,

<form action="?action=export&val=<?php echo $_GET['val'];?>&export=yes" method="post">

如何解决此问题。

4 个答案:

答案 0 :(得分:2)

您已启用Taint个功能。如果将潜在的XSS代码(受污染的字符串)传递给函数,它将发出警告。

您可以通过在php.ini

中设置taint.enable = 0来禁用它

根据其他用户的建议,使用urlencode()urlrawencode()(注意区别),htmlspecialchars()可以消除警告。此外,如果要在数据库中使用$_GET$_POST变量,请确保通过mysqli_real_escape_string()转义它或使用预准备语句或使用PDO。

答案 1 :(得分:1)

错误是指变量以与用户指定的方式完全相同的方式插入到URL中,这是一个潜在的安全风险。改为使用urlencode($_GET['val'])来逃避价值,从而抵消风险。

答案 2 :(得分:0)

您启用了污点扩展:

http://php.net/manual/en/intro.taint.php

在做echo(s)时尝试使用htmlspecialchars()

答案 3 :(得分:0)

不要直接使用$_GET[]变量,而是先处理它们,验证没有SQL注入或其他有害的东西,然后显示已处理的值。