【问题标题】:filter metacharacters from user input in xss attack在 xss 攻击中从用户输入中过滤元字符
【发布时间】:2011-02-09 16:29:14
【问题描述】:

如果我做这样的事情,在我的网站上的管理员登录页面上

http://www.domain.com/admin/index.php/%22onclick=document.location="http://www.google.com">

然后单击页面实际重定向的位置。我在某处读到需要过滤元字符。但经过数小时的谷歌搜索后,我无法找到如何阻止这种情况。从我看到的以上内容不是获取或发布。我怎样才能阻止这样的事情?

【问题讨论】:

  • 我不认为我理解这个问题。您是说您正在输入该 URL 并创建一个带有该 URL 的链接,还是您是说您正在将其输入到浏览器中?
  • 以及如何将原始查询参数嵌入到您的页面中。你在做类似echo $_GET 的事情吗?永远不要接受原始用户输入并将其用于输出。
  • @marc,我在做 在表单操作中。我最终发现我必须做类似 代替。 @Cfreak,我在浏览器的 url 中输入了它。
  • PHP_SELF 不应该仅仅因为这个原因而被使用 - 它包含原始的用户提供的查询字符串,正如您所看到的,它完全容易受到黑客攻击。

标签: php xss


【解决方案1】:

不,不要进行任何字符过滤/按摩。您需要做的就是将所有用户输入(无论它是如何发送给您的)都视为恶意病毒并按此方式处理。

这个链接是如何生成的?这是您编写的内容还是其他用户放入某种 CMS 的内容?

我不确定是否有足够的信息可以直接帮助您,但您不应该使用用户传递到您页面的任何数据来重定向。相反,使用他们传递的信息来确定他们应该去哪里。

【讨论】:

    【解决方案2】:

    我同意其他人的观点,如果您的脚本执行传入 QUERY_STRING 的任意 JavaScript 或与此相关的任何参数,则它存在严重错误。

    “这样做可以处理 80% 的威胁”要做的事情是编写一个 ScrubInput() 函数来替代 % & ; 到 their respective metacharacter codes。这不包括对存储在数据库中的事物的所有攻击向量,但 ;会处理很多这些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-07
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      相关资源
      最近更新 更多