Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP_自危险获取pagename?_Php_Security - Fatal编程技术网

使用PHP_自危险获取pagename?

使用PHP_自危险获取pagename?,php,security,Php,Security,我正在考虑使用PHP_SELF获取用户当前访问的页面名称。我很清楚在表单操作之类的地方使用PHP_SELF的危险性,尽管我不确定在hrefs中使用它会有什么坏处?但这与主要问题无关。无论如何 使用PHP_SELF抓取用户所在的页面并使用str_replace()从中获取所需信息是否存在任何危险?我想不出有什么,但这当然是一个好去处 谢谢 是的,可能是因为它是攻击者控制的变量。它可能导致诸如xss之类的漏洞 <?php print $_SERVER['PHP_SELF']?> htt

我正在考虑使用PHP_SELF获取用户当前访问的页面名称。我很清楚在表单操作之类的地方使用PHP_SELF的危险性,尽管我不确定在hrefs中使用它会有什么坏处?但这与主要问题无关。无论如何

使用PHP_SELF抓取用户所在的页面并使用
str_replace()
从中获取所需信息是否存在任何危险?我想不出有什么,但这当然是一个好去处


谢谢

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

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

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

http://localhost/self.php/alert(1)

如果可能,您应该使用攻击者无法控制的变量,如
$\u SERVER[“SCRIPT\u FILENAME”]
。还有一些其他的,只要检查一下。

如果你需要整个URL的检查。否则,使用$\u SERVER['REQUEST\u URI']获取当前页面的URI(如果url为example.com/foo/bar.php,它将为您提供foo/bar.php)。

使用str\u replace(),您到底在做什么?除去实际页面名称之外的所有内容。例如,如果我有
/directory/page.php
,我就在“page”之后。不知怎么的,我看不出你如何用str_replace()实现这一点,那么让我来帮你。您可以使用substr('foo/bar.php/x',0,strpos('foo/bar.php/x',')其中
是要用作删除所有其他内容的起点的字符。或者您可以使用它获取实际的文件名(首先剥离路径),然后使用str_replace()删除
.php
部分。即使我剥离了除当前页面名以外的所有内容?我会检查.php扩展名(所有被检查的扩展名都会以.php结尾),然后去掉它后面的所有内容。@conLo听起来很容易出错。您应该使用攻击者无法控制的变量,如
$\u SERVER[“SCRIPT\u FILENAME”]
我不确定哪一个最安全。我读过一些文章,其中整个
$\u服务器
容易受到某种攻击。当然,对我来说,我用哪一个没有什么区别。他们都得出了相同的结论。因此,您可以安全地用PHP\u SELF替换任何
$\u服务器
变量。@conLo我不知道您指的是什么,只关心数据的使用方式。大多数$\u服务器变量都可以由攻击者控制,但$\u GET、$\u POST$\u COOKIE和$\u请求始终由攻击者控制。如果有人好奇,我最终使用了
$\u服务器['SCRIPT\u NAME']
,因为它不关心路径信息,将其分解成数组,反转数组,并使用
substr()
strpos()
来做他们的事情。我已经检查了这个页面(和其他几个页面),但还没有得到一个直接的答案,关于它仍然是危险的做我试图用它。