【问题标题】:xss javascript protectionxss javascript保护
【发布时间】:2012-01-25 15:08:55
【问题描述】:

所以我正在使用 jQuery UI 库来打开新的对话框窗口,当打开新的对话框窗口时,我会传递一些类似这样的参数

<a href="http://www.mysite.com/custompage.html?width=100&height=200&param1=abc&param2=http://www.anothersite.com&param3=custom3">open modal</a>

该网站运行良好,完全没有问题,我的 custompage.html 只是拾取那些传递的值并在页面上使用它们,如下所示:

var a = customfunctionget(param1); var b = customfunctionget(param2)....

我刚刚收到一份报告,称我们很容易受到跨站点脚本攻击,将任何参数替换为以下内容:

><script>alert(123)</script><param 

我正确理解应该发生的事情,但是在我尝试注入脚本的任何浏览器上,警报永远不会显示,因此“脚本/注入”没有被处理,custompage.html 停止按预期工作,因为我们需要正确输入值,但在这方面我无能为力。

这里有没有我想念的魔法药丸?我发现的大多数 XSS 信息都做同样的事情,尝试通过标签注入警报,但除了我拒绝在参数格式不正确时显示任何内容之外,我不知道还能做什么。

欢迎任何建议、教程。

【问题讨论】:

    标签: javascript jquery jquery-ui xss


    【解决方案1】:

    您可以将所有&amp;lt;&amp;gt;&amp;amp; 字符分别编码为&amp;lt;&amp;gt;&amp;amp;,这是最简单的事情之一。每当浏览器看到 &lt;something&gt; 时,它就会认为它是一个 dom 元素。如果您对这些字符进行编码,浏览器将实际显示它们。这将阻止试图在您的网站上执行 &lt;script&gt;badstuff&lt;/script&gt; 的人。

    请注意,如果您这样做,人们将无法执行诸如添加 &lt;b&gt; 标记之类的操作。

    上述建议只是第一步,但绝不是详尽无遗的。

    我刚找到这个,好像是good guide

    【讨论】:

    • 因此,如果我根据您的建议对所有内容进行编码,并且当有人用脚本&lt;script&gt;bs&lt;/script&gt; 替换参数时,我仍然无能为力,这意味着任何人都可以查看源代码并获取我的锚标记,替换一个参数并直接点击页面。我不确定这是如何“保护”页面而不是像以前那样中断,因为参数格式不正确
    • 另外,入侵者不能对脚本标签%3Cscript%3Ebs%3C%2Fscript%3E 进行编码,浏览器就会忽略这个“安全性”。
    • helmut 是的,这就是为什么我说“上述建议是第一步,但绝不是详尽无遗的。”在我的回答中。看链接...
    【解决方案2】:

    Javascript 中有 encodeURIComponent() 函数对特殊字符进行编码以避免插入脚本

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 1970-01-01
      • 2020-11-14
      • 2014-02-10
      • 2012-08-17
      • 1970-01-01
      相关资源
      最近更新 更多