我根据客户的要求开发了一个在 core-php 中的 Web 应用程序。我的客户进行了漏洞测试,发现跨框架脚本是一个硬级别漏洞。
在这种情况下可以做些什么来避免它?有没有更好的选择?
我根据客户的要求开发了一个在 core-php 中的 Web 应用程序。我的客户进行了漏洞测试,发现跨框架脚本是一个硬级别漏洞。
在这种情况下可以做些什么来避免它?有没有更好的选择?
跨框架脚本允许攻击者将您的网站嵌入到他们自己的网站中,作为框架/iframe,然后监视您网站的用户。
这需要一些社会工程学。攻击者会欺骗某人访问他们的网页,其中包含(例如)您网站的登录信息。父网站还需要一些恶意 Javascript 来读取击键以捕获登录。理论上,浏览器有一个同源策略,应该可以防止攻击者这样做,但实际上这种攻击是可能的,通常是由于浏览器错误。
防御:
根据 W3 规范,您应该frame-ancestors在 HTTP 响应中包含 Content Security Policy 标头,以防止您的网站被加载到框架中。一些较旧的浏览器可能不支持此标头,因此还要使用值为 DENY、SAMEORIGIN 或 ALLOW-FROM uri 的 X-Frame-Options 标头。在某些浏览器中,X-Frame-Options 优先于 CSP 框架祖先。
您还可以添加一些 Javascript“框架破坏”代码,以防止您的网站在旧浏览器中被“框架”。
这些解决方案和更多细节在这个OWASP 备忘单上进行了讨论。
我在找到这个链接的地方找不到相关问题,但这里有一篇关于FrameBusting以及你应该如何实现它的论文。
由斯坦福大学的 Gustav Rydstedt、Elie Bursztein 和 Dan Boneh 与卡内基梅隆大学的 Collin Jackson 合作撰写
这是论文建议:
<style>
body {display: none; }
</style>
<script>
if (self === top) {
document.getElementsByTagName("body")[0].style.display = 'block';
} else {
top.location = self.location
}
</script>
请注意display: none,这非常重要,因为攻击者可以在您的部分页面上禁用 javascript。有关更多信息,请参阅论文。