2010-08-10 72 views
0

使用超级全球$_SERVER['PHP_SELF']的好处是什么?

+3

我不知道你在问什么。 – rook 2010-08-10 06:22:02

+0

没关系,如果你不知道PHP。 – proyb2 2010-08-10 06:30:11

+0

请注意,如果您正在使用'$ PHP_SELF',关闭注册全局变量:) – alex 2010-08-10 06:30:57

回答

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>) 

这里的一切在括号中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> 
+10

我喜欢这个部分*它的用途主要是介绍跨站点脚本漏洞* ...让我的最后一个今天得到满足! – alex 2010-08-10 06:32:01

+0

这就是为什么我切换到.NET进行Web开发的一部分。 :) – 2010-08-10 06:44:12

+6

很明显,.Net是很好的证明。 – 2010-08-10 06:48:52

相关问题