刚开始不理解,后面查了一些资料大概懂了
$_SERVER[“PHP_SELF”] 变量有可能会被黑客使用!
当黑客使用跨网站脚本的HTTP链接来攻击时, S E R V E R [ " P H P S E L F " ] 服 务 器 变 量 也 会 被 植 入 脚 本 。 原 因 就 是 跨 网 站 脚 本 是 附 在 执 行 文 件 的 路 径 后 面 的 , 因 此 _SERVER["PHP_SELF"]服务器变量也会被植入脚本。原因就是跨网站脚本是附在执行文件的路径后面的,因此 SERVER["PHPSELF"]服务器变量也会被植入脚本。原因就是跨网站脚本是附在执行文件的路径后面的,因此_SERVER[“PHP_SELF”]的字符串就会包含HTTP链接后面的JavaScript程序代码。
指定以下表单文件名为 “test_form.php”:
<form method=“post” action="<?php echo $_SERVER["PHP_SELF"];?>">
现在,我们使用URL来指定提交地址 “test_form.php”,以上代码修改为如下所示:
但是,考虑到用户会在浏览器地址栏中输入以下地址:
http://www.runoob.com/test_form.php/%22%3E%3Cscript%3Ealert(‘hacked’)%3C/script%3E
以上的 URL 中,将被解析为如下代码并执行:
请注意, 任何JavaScript代码可以添加在
如何避免 $_SERVER[“PHP_SELF”] 被利用?
$_SERVER[“PHP_SELF”] 可以通过 htmlspecialchars() 函数来避免被利用。
form 代码如下所示:
<form method=“post” action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
htmlspecialchars() 把一些预定义的字符转换为 HTML 实体。现在如果用户想利用 PHP_SELF 变量, 结果将输出如下所示:
来源:https://www.runoob.com/php/php-form-validation.html