在PHP中使用超级全局`$ _SERVER ['PHP_SELF']`有什么好处?
使用超级全球$_SERVER['PHP_SELF']
的好处是什么?
$_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>)
这里的一切在括号中url编码,然后我可以将代码注入您的页面。如果我将该链接发送给其他人,那么我将在您的网站的浏览器中执行该代码。
编辑: 为了使其安全免受XSS攻击,使用htmlspecialchars
:
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">...</form>
编辑2:由于这$_SERVER
变量已经被整个互联网络滥用,所以经常在那里的例子,唐不要错过阅读您的HTML参考资料:由于该URI是最短的相对URI,因此您可以将action属性留空:
<form action="" method="post" >...</form>
我喜欢这个部分*它的用途主要是介绍跨站点脚本漏洞* ...让我的最后一个今天得到满足! – alex 2010-08-10 06:32:01
这就是为什么我切换到.NET进行Web开发的一部分。 :) – 2010-08-10 06:44:12
很明显,.Net是很好的证明。 – 2010-08-10 06:48:52
我不知道你在问什么。 – rook 2010-08-10 06:22:02
没关系,如果你不知道PHP。 – proyb2 2010-08-10 06:30:11
请注意,如果您正在使用'$ PHP_SELF',关闭注册全局变量:) – alex 2010-08-10 06:30:57