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