PHP_SELF和XSS

时间:2011-05-21 06:22:00

标签: php xss

我发现一篇文章声称$_SERVER['PHP_SELF']容易受到XSS攻击。

我不确定我是否理解它,但我几乎肯定这是错的。

如何容易受到XSS攻击!?

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  <!-- form contents -->
</form>

5 个答案:

答案 0 :(得分:32)

为了安全使用,您需要使用htmlspecialchars()

<?php echo htmlspecialchars($_SERVER["PHP_SELF"], ENT_QUOTES, "utf-8"); ?>

请参阅A XSS Vulnerability in Almost Every PHP Form I’ve Ever Written了解$_SERVER["PHP_SELF"]如何受到攻击。

答案 1 :(得分:26)

这确实是一个XSS漏洞。我确实理解您认为它可能不会损害您的网站,但这并不意味着它不是真实的。

如果您不相信,请尝试以下方法:

我们假设您有一个页面,例如“registration.php”。 我们假设您有一个表单,其中包含以下操作:

<?php echo $_SERVER['PHP_SELF']; ?>

你确实放下了它:

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  <!-- form contents -->
</form>

现在只需将字符串附加到下面

%27%22/%3E%3Cscript%3Ealert(1)%3C/script%3E

实际上并不难理解,因为PHP_SELF是URL的反映,您的应用程序将读取您放入URL中的任何内容并回显它。这很简单。

htmlspecialchars应该处理此事,没有理由对证据提出异议。

<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
   <!-- form contents -->
</form>

然而,即使这是加工饼干的第一步,也不是它自动发生。即使很容易制造攻击(因为攻击者会在你的网站上注册并且会看到cookie看起来如何......),一系列其他因素必须是真实的,才能达到cookie精炼的程度情况。例如,cookie不得过期。而不是取决于cookie的复杂程度。可能你在服务器上有其他预防措施,它不必是基于cookie存在的所有身份验证!

虽然我确实认为所有条件的编程都相当困难且非常糟糕(例如,即使yahoo.mail有这样的漏洞,如果你在互联网上看,你甚至会发现漏洞利用和cookie解码器), XSS是真实的,谁知道如果你的网站遭受狡猾的攻击者可能会做什么。治愈很简单......

答案 2 :(得分:17)

您链接的文章为您提供:

http://www.example.com/form.php/%22%3E%3Cscript%3Ealert(‘xss attack’)%3C/script%3E%3Cbr%20class=%22irrelevant

什么不清楚?

编辑:这是一次XSS攻击,因为我可以隐藏从我的网站到你的网站的链接,并在网址上添加了一些JS,这些网址会向我发送你的cookie,所以当你点击该链接时,你就是pwnd。

答案 3 :(得分:4)

您应该使用filter_input()来访问PHP中的超全局。如果将过滤器设置为FILTER_SANITIZE_FULL_SPECIAL_CHARS,它将删除XSS中通常使用的不安全字符。举个例子:

<form method="post" 
    action="<?php filter_input(INPUT_SERVER, 'PHP_SELF', FILTER_SANITIZE_FULL_SPECIAL_CHARS); ?>">
<!-- form contents -->
</form>

答案 4 :(得分:0)

该漏洞是用户可以在表单中输入恶意 JavaScript 代码。为了防止这种情况,使用了 htmlspecialchars 函数。

预定义的字符(如 >、<、"、')被转换为实体(> < 等)

htmlspecialchars($_SERVER["PHP_SELF"]) 确保所有提交的表单变量都转换为实体。

要了解有关此漏洞的更多信息,请访问:https://www.w3schools.com/php/php_form_validation.asp

另一个可以帮助您的链接:https://www.google.com/amp/s/www.bitdegree.org/learn/php-form-validation/amp