使用 super global 有什么好处$_SERVER['PHP_SELF']
?
问问题
1170 次
1 回答
15
$_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>
于 2010-08-10T06:28:55.943 回答