2010-08-17 55 views
1

我正在考虑使用PHP_SELF来抓取用户当前正在访问的页面的名称。我很清楚在表单动作等地方使用PHP_SELF的危险,但我不确定在hrefs中使用它会有什么伤害?但这并不是主要问题。 。 。无论如何。使用PHP_SELF获取页面名称 - 危险?

使用PHP_SELF抓取用户所在页面并使用str_replace()从我的需要获取信息有没有任何危险?我想不出任何,但这当然是一个很好的问题。 ;)

谢谢!

+0

究竟你在用str_replace()做什么? – VolkerK 2010-08-18 00:06:34

+0

剥离除实际页面名称以外的所有内容。例如,如果我有'/ directory/page.php',我只是在'page'之后。 – conLo 2010-08-18 00:16:52

+0

不知何故,我无法看到你怎么能通过str_replace() – VolkerK 2010-08-18 07:12:16

回答

2

是的,它可能是因为它是攻击者控制的变量。它可能导致诸如xss之类的漏洞。

<?php print $_SERVER['PHP_SELF']?> 

http://localhost/self.php/<script>alert(1)</script> 

如果possilbe你应该使用一个变量,攻击者无法控制像$_SERVER["SCRIPT_FILENAME"]。还有一些其他的,只需检查phpinfo()

+0

即使我剥离了除当前页面名称外的所有内容?我正在检查.php扩展名(所有被检查的扩展名将以.php结尾),并将所有扩展名后面的内容全部删除。 – conLo 2010-08-18 00:16:11

+0

@conLo听起来容易出错。你应该使用一个攻击者无法控制的变量,比如'$ _SERVER [“SCRIPT_FILENAME”]' – rook 2010-08-18 00:22:30

+0

我不确定哪个是最安全的。我已经阅读过文章,其中'$ _SERVER'的整体容易受到某种攻击或其他攻击。对我来说,当然,我用哪一个并没有什么不同。他们都导致相同的结论。因此,您可以安全地用PHP_SELF替换任何可以做到这一点的'$ _SERVER'变量。 – conLo 2010-08-18 00:26:01

1

那么如果你需要整个URL检查this tutorial。否则,使用$ _SERVER ['REQUEST_URI']获取当前页面的URI(如果URL是example.com/foo/bar.php,它会给你foo/bar.php)。

+0

我检查这个页面(和其他几个人)了,但还没有得到关于它仍然是很危险的做什么我试图用它直接的答案。 – conLo 2010-08-18 00:17:29