$_SERVER["PHP_SELF"]是超级全局变量,返回当前正在执行脚本的文件名,与 document root相关。
当黑客使用跨网站脚本的HTTP链接来攻击时,$_SERVER["PHP_SELF"]服务器变量也会被植入脚本。原因就是跨网站脚本是附在执行文件的路径后面的,因此$_SERVER["PHP_SELF"]的字符串就会包含HTTP链接后面的JavaScript程序代码。
如何避免:
$_SERVER["PHP_SELF"] 可以通过 htmlspecialchars() 函数来避免被利用。
htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。
& (和号) 成为 &
" (双引号) 成为 "
' (单引号) 成为 '
< (小于) 成为 <
> (大于) 成为 >
例子:
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if (empty($_POST["name"])) //空值处理
{
$nameErr = "名字是必须的";
}
else
{
$name = myInput($_POST["name"]);
}
//接收数据并处理和赋值
$email = myInput($_POST["email"]);
$website = myInput($_POST["website"]);
$comment = myInput($_POST["comment"]);
$gender = myInput($_POST["gender"]);
}
//处理数据
function myInput($data)
{
$newData = trim($data); //去除空格和换行
$newData = stripslashes($data); //去除反斜杠
$newData = htmlspecialchars($data); //转义函数
return $newData;
}
然后就OK啦,感觉萌萌哒(懵懵哒)~
网友评论