使用 X-Frame-Options 防止被iframe 造成跨域iframe 提交挂掉
2015-07-14 15:03
621 查看
Refused to display '
http://www.***.com/login/doLogin.html' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.
触发原因:页面的返回头被设置 X-Frame-Options SAMEORIGIN ,只能被同源的iframe 引用。跨域名的iframe 没法显示了。
解决办法:
第一步 把 服务器上的 X-Frame-Options header 去掉
第二步 添加 如下代码到 不想被iframe 的页面header 里去。
<style id="antiClickjack">body{display:none !important;}</style>
<script>
if (self === top) {
var antiClickjack = document.getElementById("antiClickjack");
antiClickjack.parentNode.removeChild(antiClickjack);
} else {
top.location = self.location;
}
</script>
其他:
X-Frame-Options ALLOW-FROM 只支持单一域名 想支持多个二级域名的这个无解
并不是所有的浏览器都支持 这个header 所以,低版本的浏览器仍然会被iframe 成功
参考:http://www.css88.com/archives/5141
Browsers Supporting X-Frame-Options
IE8+
Opera 10.50+
Safari 4+
Chrome 4.1.249.1042+ (Allow-From not yet supported)
Firefox 3.6.9 (or earlier with NoScript)
无法通过 <meta http-equiv=”X-FRAME-OPTIONS” content=”SAMEORIGIN”> 这种形式在document 的 header 里面设置,只能通过 http header 设置。
Browsers ignore the header if speicified in the
防止被IFRAME :把这些代码放到你的 header 里
<style id="antiClickjack">body{display:none !important;}</style>
<script>
if (self === top) {
var antiClickjack = document.getElementById("antiClickjack");
antiClickjack.parentNode.removeChild(antiClickjack);
} else {
top.location = self.location;
}
</script>
参考这个帖子 https://www.codemagi.com/blog/post/194
关于点击劫持 和 被iframe 的其他参考:
http://javascript.info/tutorial/clickjacking http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx https://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options
带中文请求的URL 可能会返回400 需要 encodeURIComponent 处理.尤其是使用IE 的时候。
http://www.***.com/login/doLogin.html' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.
触发原因:页面的返回头被设置 X-Frame-Options SAMEORIGIN ,只能被同源的iframe 引用。跨域名的iframe 没法显示了。
解决办法:
第一步 把 服务器上的 X-Frame-Options header 去掉
第二步 添加 如下代码到 不想被iframe 的页面header 里去。
<style id="antiClickjack">body{display:none !important;}</style>
<script>
if (self === top) {
var antiClickjack = document.getElementById("antiClickjack");
antiClickjack.parentNode.removeChild(antiClickjack);
} else {
top.location = self.location;
}
</script>
其他:
X-Frame-Options ALLOW-FROM 只支持单一域名 想支持多个二级域名的这个无解
并不是所有的浏览器都支持 这个header 所以,低版本的浏览器仍然会被iframe 成功
参考:http://www.css88.com/archives/5141
Browsers Supporting X-Frame-Options
http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx
IE8+Opera 10.50+
Safari 4+
Chrome 4.1.249.1042+ (Allow-From not yet supported)
Firefox 3.6.9 (or earlier with NoScript)
无法通过 <meta http-equiv=”X-FRAME-OPTIONS” content=”SAMEORIGIN”> 这种形式在document 的 header 里面设置,只能通过 http header 设置。
Browsers ignore the header if speicified in the
METAtag. So the following
METAwill be ignored:
< meta http-equiv = "X-Frame-Options" content = "deny" > |
<style id="antiClickjack">body{display:none !important;}</style>
<script>
if (self === top) {
var antiClickjack = document.getElementById("antiClickjack");
antiClickjack.parentNode.removeChild(antiClickjack);
} else {
top.location = self.location;
}
</script>
参考这个帖子 https://www.codemagi.com/blog/post/194
关于点击劫持 和 被iframe 的其他参考:
http://javascript.info/tutorial/clickjacking http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx https://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options
带中文请求的URL 可能会返回400 需要 encodeURIComponent 处理.尤其是使用IE 的时候。
相关文章推荐
- Linux的10个彩蛋
- Centos允许root远程登录设置
- OpenLayers开发:简单示例
- Linux常见的命令
- eclipse下设置tomcat,修改Java代码不必重启tomcat
- -Dmaven.multiModuleProjectDirectory system propery is not set.
- Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的分布式版本控制软件,它不同于Subversion、CVS这样的集中式版本控制系统。在集中式版本控制系统
- 在Linux(CentOS 6.2 64位操作系统)下安装MySQL数据并开启远程访问权限
- OpenLayers开发:介绍和环境搭建
- centos 6.4配置samba+ldap认证
- nginx搭建图片服务器
- 一个 非常好的网站
- LNMP(Linux+Nginx+Mysql+PHP)环境下安装yaf框架并编写一个MVC例子
- linux内核kallsyms机制分析
- UNIX/linux密码文件介绍
- OpenLayers 框选图层交互 从图层服务器读取数据
- 自动化运维工具Saltstack详细介绍
- 嵌入式Linux驱动开发案例流程--LED驱动
- Centos7安装mysql5(linux第二篇记录)
- Apache Maven 入门篇