微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

实施 Checkmarx 建议的点击劫持修复引入了高严重性的客户端 DOM XSS 漏洞

如何解决实施 Checkmarx 建议的点击劫持修复引入了高严重性的客户端 DOM XSS 漏洞

我的组织已使用 Checkmarx 扫描了我们的代码,并且检测到了低严重性问题旧浏览器上的潜在点击劫持,原因是 JavaScript 函数在 HTML 图像点击事件上触发。

我们已实施以下建议修复:

  • 在服务器上定义并实施内容安全策略 (CSP) 边,包括一个frame-ancestors指令(frame-ancestors 'self')

  • x-frame-options”标头设置为“SAMEORIGIN”

  • 需要旧版浏览器支持,因此添加了类似于 Checkmarx 文档中的以下示例的帧破坏脚本:

<html>
    <head>
        <style> html {display : none; } </style>
        <script>
            if ( self === top ) {
                document.documentElement.style.display = 'block';
            }
            else {
                top.location = self.location;
            }
        </script>
    </head>
    <body>
        <button onclick="clicked();">Click here if you love ducks</button>
    </body>
</html>

现在 Checkmarx 将文件标记为高严重性问题 Client DOM XSS,原因如下:

top.location = self.location;

建议添加用于旧版点击插孔保护。

因此,如果我们针对低严重性问题(旧版浏览器上的潜在点击劫持)实施 Checkmarx 建议的修复,则会引入高严重性问题(客户端 DOM XSS)。

这里的正确行动方案是什么?

解决方法

为了降低 Web 应用程序中出现 DOM-based cross-site scripting 漏洞的风险,请对 self.location 进行 URL 编码

top.location = encodeURI(self.location);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。