1

我不熟悉 PHP,我们的产品不是用 PHP 编写的。我们使用使用 PHP 为我们的文档创建的供应商。最近我们在 PHP 代码中发现了 XSX 攻击。XSS 攻击是在攻击者访问

vendor.php/%22onmouseover=%22alert%281310%29%22

常规访问就像

vendor.php?param1=val1&param2=val2

在研究了代码后,我发现了有问题的行:

$SelfURL = $_SERVER['PHP_SELF'];

我已经使用这个很棒的链接PHP_SELF 和 XSS修复了它:

$SelfURL = htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, "utf-8");

我们已将修复程序发送给供应商并要求修复 PHP。答案让我感到惊讶:供应商声称他们的 PHP 没有任何问题,我们应该在我们的 Apache 服务器上启用 URL 重写规则,该规则不允许访问vendor.php/.

我试图解释一下,我们没有 URL 重写规则,只有访问他的页面会造成攻击(由于$SelfURL = $_SERVER['PHP_SELF'])因为我不熟悉 PHP,所以我想重新检查一下:

  1. 够用htmlspecialchars吗?
  2. 我们应该创建 URL 重写规则吗?
4

2 回答 2

2

重要的是确实禁止从某些文件访问。您可以使用 .htaccess 文件并重写规则来执行此操作。但也要始终清理用户输入!永远不要冒险!

于 2013-06-01T16:35:30.783 回答
1

使用 htmlspecialchars 就足够了吗?

要解决 HTML 注入问题,是的。但是,如果您发现他们未能以如此微不足道的方式对内容进行 HTML 转义的地方,那么他们似乎没有一致应用的转义方法......所以很可能还有更多。

使用自动扫描仪和/或表面代码审查将是评估这是否是更大问题的一部分的下一步。

供应商声称他们的 PHP 没有任何问题

这并不是对安全负责的态度的标志。一点也不鼓励。

我们应该在我们的 Apache 服务器上启用 URL 重写规则,该规则不允许访问类似的页面vendor.php/

您不需要访问该页面吗?

如果他们为您提供了一组不应访问的管理页面,那么他们需要记录所涉及的页面,以便您可以删除对它们的访问权限。

您通常不会使用重写来阻止对页面的访问。使用指令会更有意义Deny,或者 - 如果可能的话最好 - 只需从部署中删除有问题的页面。

于 2013-06-02T08:59:21.467 回答