多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 特征 * 用户亲手操作 * 用户不知情 * …… # 危害 * 盗取用户资金(转账、消费) * 获取用户敏感信息 * …… # 原理 目标网站以透明的`iframe`的形式嵌入到攻击网站中。 # 防御 ## Javascript 禁止内嵌 ```javascript // top:攻击者文档的window对象; // window:被嵌入的iframe文档的window对象 if (top.location !== window.location) { top.location = window.location; } ``` 但这种办法并不能完全防御,比如: ```html <!doctype html> <html> <head> <meta charset="utf-8"/> <title>csrf demo</title> </head> <body style="background:url(clickhijack.png) no-repeat"> <iframe style="opacity:0" src="http://localhost:1521/post/1" sandbox="allow-form" width="800" height="600"></iframe> </body> </html> ``` > 当`iframe`标签中设置了sandbox属性时,嵌入页面`http://localhost:1521/post/1`中的脚本会被禁止运行,自然`top.location = window.location`这段防御脚本就没用了。 > `sandbox="allow-form"`是说禁止包括脚本运行在内的很多功能,但是允许表单提交。 ## X-FRAME-OPTIONS 禁止内嵌 对某个网页设置`http`头`X-Frame-Options` > X-Frame-Options: DENY // 该网页不允许被内嵌 > X-Frame-Options: SAMEORIGIN // 该网页仅允许被同域名的网页内嵌 > X-Frame-Options: ALLOW-FROM // 该网页仅允许被指定的网页内嵌 ## 其他辅助手段 比如:验证码