3

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

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

我该如何解决这个问题。

4

4 回答 4

3

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

您可以通过在 php.ini 中设置taint.enable=来禁用它0

正如其他用户所建议的,使用urlencode(), urlrawencode()(注意区别)htmlspecialchars()可以消除警告。此外,如果您想在数据库中使用$_GET,$_POST变量,请务必通过mysqli_real_escape_string()或使用准备好的语句或使用 PDO 对其进行转义。

于 2013-03-28T10:16:40.063 回答
1

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

于 2013-03-28T10:16:32.870 回答
0

您启用了污点扩展:

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

在执行 echo(s) 时尝试使用 htmlspecialchars()

于 2013-03-28T10:16:28.603 回答
0

不要直接使用$_GET[]变量,而是先对其进行处理,确认没有SQL注入或其他有害的东西,然后显示处理后的值。

于 2013-03-28T10:17:18.937 回答