使用超级全局$_SERVER['PHP_SELF']
有什么好处?
答案 0 :(得分:14)
$_SERVER['PHP_SELF']
没有(或不应该)包含域名。它包括调用脚本的URL的路径组件。
它的用途主要是引入跨站点脚本漏洞。
您可以使用它来填写表单标记的action属性:
<form method="post" action="<?=$_SERVER['PHP_SELF']?>"></form>
如果我随后使用以下网址致电您的网页:
your-file-that-uses-php-self.php/("><script>eval-javascript-here</script>)
parens中的所有内容都是urlencoded,然后我可以将代码注入您的页面。如果我将该链接发送给其他人,那么我将在您的浏览器中从您的网站执行该代码。
修改强>
为了使其免受XSS攻击,请使用htmlspecialchars
:
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">...</form>
编辑2:由于这个$_SERVER
变量在互联网的示例中经常被滥用,所以不要错过阅读HTML参考:因为该URI是最短的相对URI,你可以将action属性留空:
<form action="" method="post" >...</form>