如何解决实施 Checkmarx 建议的点击劫持修复引入了高严重性的客户端 DOM XSS 漏洞
我的组织已使用 Checkmarx 扫描了我们的代码,并且检测到了低严重性问题旧浏览器上的潜在点击劫持,原因是 JavaScript 函数在 HTML 图像点击事件上触发。
我们已实施以下建议修复:
-
在服务器上定义并实施内容安全策略 (CSP) 边,包括一个frame-ancestors指令(frame-ancestors 'self')
-
“x-frame-options”标头设置为“SAMEORIGIN”
<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 举报,一经查实,本站将立刻删除。