1

使用 super global 有什么好处$_SERVER['PHP_SELF']

4

1 回答 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 回答