利用网页内嵌Frame来盗链和流量导入比较常见,也可以用于XSS攻击,如果中招的话,可以通过设置 X-Frame-Options到HTTP响应头来解决。解决方法只对支持X-Frame-Options的浏览器有效。
X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在 <frame>, <iframe> 或者 <object> 中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌到别人的网站中去,也从而避免了点击劫持 (clickjacking) 的攻击。
使用HTTP 响应头信息中的设置 X-Frame-Options属性
使用 X-Frame-Options的属性参数:
DENY:表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。SAMEORIGIN:表示该页面可以在相同域名页面的 frame 中展示。
ALLOW-FROM:表示该页面可以在指定来源的 frame 中展示。
如果你自己不用frame也要防止别人用frame可以设置为DENY,如果你自己用frame但要防止别人用frame可以设置为SAMEORIGIN
在Nginx的配置中增加
add_header X-Frame-Options SAMEORIGIN;
在Haproxy的配置增加
rspadd X-Frame-Options:\ SAMEORIGIN
即可有效避免Frame的XSS攻击。
原理参考:
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/X-Frame-Options