iframe跨域安全
时间:2022-07-24
本文章向大家介绍iframe跨域安全,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.响应头X-Frame-Options
响应头X-Frame-Options是用来给浏览器指示允许一个页面可否在<frame>,<iframe>,<object>中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌套到其他网站中去,也从而避免了点击劫持 (clickjacking) 的攻击。
支持的指令
- DENY 表示该页面不允许在frame中展示,即便是在相同域名的页面中嵌套也不允许。
- SAMEORIGIN 表示该页面可以在相同域名页面的frame中展示。
- ALLOW-FROM uri1,uri2 表示该页面可以在指定来源的frame中展示。
在nginx中配置
add_header X-Frame-Options DENY;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Frame-Options "ALLOW-FROM http://www.a.com,http:///www.b.com";
兼容性
ALLOW-FROM指令在除IE以外的很多浏览器中无效,如在chrome中报错如下:
Invalid 'X-Frame-Options' header encountered when loading 'http://www.a.com':
'ALLOW-FROM http://www.a.com' is not a recognized directive.
The header will be ignored.
2.响应头Content-Security-Policy
响应头Content-Security-Policy允许网站管理员控制允许用户代理为给定页面加载的资源。除少数例外,策略主要涉及指定服务器源和脚本端点。这有助于防止跨站点脚本攻击(XSS)。
支持的指令
- frame-ancestors uri1 uri2 允许一个页面可否在<frame>,<iframe>,<object>,<embed>,或<applet>中展现。 将此指令设置’none’为类似于X-Frame-Options: DENY
在nginx中配置
add_header Content-Security-Policy "frame-ancestors ‘none’";
add_header Content-Security-Policy "frame-ancestors http://www.a.com http://www.b.com";
兼容性
IE浏览器不支持
3.子域名跨域
site1.a.com
document.domain = "a.com";
site2.a.com
document.domain = "a.com"
将不同子域名的站点document.domain设置为相同的基础域名,则可实现跨域访问
- Python-装饰器详解
- Contact Manager Web API 示例[2] Web API Routing
- Android一些关于分辨率和布局的设置
- log4net 中错误 System.Web.HttpException (0x80004005): 文件不存在
- Contact Manager Web API 示例[2] Web API Routing
- Python内置函数
- NET实现微信公共平台上传下载多媒体文件
- css3基础知识——回顾
- Contact Manager Web API 示例[3] 分页和查询(Paging and Querying)
- @font-face css3自定义个性化字体
- 你不知道的javaScript笔记(7)
- Contact Manager Web API 示例[4] 异常处理(Exception Handling)
- 你不知道的javaScript笔记(6)
- 创建支持多种屏幕尺寸的Android应用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PageHelper分页插件
- Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException
- 分享一套仿英雄联盟大型多人联机实时对战游戏源码(包含完整服务器和客户端源码)
- 【Flutter 专题】101 何为 Flutter Elements ?
- 10.10面试:SpringMVC中目前学习过的注解及功能?+怎么接受前端传递到后台的数据?
- 【Flutter 专题】102 何为 Flutter RenderObjects ?
- 创建出来的maven项目没有iml文件
- SpringMVC传递参数乱码解决,web.xml中配置编码过滤器
- SpringMVC中传值有些值为null使用@RequestParam(“name“)解决
- 9.30面试:AOP+事务+JDK动态代理与cglib区别+Spring的aop如何切换底层创建代理对象的方式
- R语言实现基因组的可视化
- Linux实用命令大全(附思维导图)
- 二叉搜索树与python中self参数理解
- 需要了解的Python编码解码知识
- 程序员必备技能之markdown写作