php什么是同源策略,javascript - 绕过同源策略的方法
origin方法
方法类型:iframe。
请注意,这是一个iframe方法,它将document.domain的值设置为当前域的后缀。 如果它这样做,则较短的域用于后续的原始检查。 例如,假设文档中的脚本origin执行以下语句:
document.domain = "company.com";
执行该语句后,页面将通过origin传递原点检查。但是,出于同样的原因,company.com无法将source设置为window.postMessage。
使用此方法,您将被允许从源自主域上的页面上的子域的iframe中提取javascript。 此方法不适用于跨域资源,因为Firefox等浏览器不允许您将origin更改为完全外来域。
来源:[https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript]
跨源资源共享方法
方法类型:AJAX。
跨源资源共享(CORS)是W3C工作草案,它定义了在访问源的源时浏览器和服务器必须如何通信。 CORS背后的基本思想是使用自定义HTTP标头,允许浏览器和服务器相互了解,以确定请求或响应是成功还是失败。
对于一个简单的请求,使用origin或source而没有自定义标头且其主体为window.postMessage,请求将发送一个名为MessageEvent的额外标头.Origin标头包含的源(协议,域名和端口) 请求页面,以便服务器可以轻松确定它是否应该响应。 示例data标题可能如下所示:
Origin: http://www.stackoverflow.com
如果服务器决定应该允许该请求,它会发送一个origin标头,回显发送的相同源或source(如果它是公共资源)。 例如:
Access-Control-Allow-Origin: http://www.stackoverflow.com
如果缺少此标头,或者原点不匹配,则浏览器不允许该请求。 如果一切顺利,则浏览器处理请求。 请注意,请求和响应都不包含cookie信息。
Mozilla团队在他们关于CORS的帖子中建议你应检查是否存在origin属性,以确定浏览器是否通过XHR支持CORS。 然后,您可以结合source对象的存在来覆盖所有浏览器:
function createCORSRequest(method, url){
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr){
xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined"){
xhr = new XDomainRequest();
xhr.open(method, url);
} else {
xhr = null;
}
return xhr;
}
var request = createCORSRequest("get", "http://www.stackoverflow.com/");
if (request){
request.onload = function() {
// ...
};
request.onreadystatechange = handler;
request.send();
}
请注意,要使CORS方法起作用,您需要访问任何类型的服务器标头机制,并且不能简单地访问任何第三方资源。
资料来源:[http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/]
origin方法
方法类型:iframe。
origin,当被调用时,当任何必须执行的挂起脚本完成时(例如,如果从事件处理程序调用window.postMessage,之前设置的挂起超时等,则保留事件处理程序),将导致在目标窗口调度source。 MessageEvent具有类型消息,data属性,设置为提供给window.postMessage的第一个参数的字符串值,origin属性,对应于调用window.postMessage时调用window.postMessage的窗口中主文档的原点,以及 source属性,即调用window.postMessage的窗口。
要使用origin,必须附加事件侦听器:
// Internet Explorer
window.attachEvent('onmessage',receiveMessage);
// Opera/Mozilla/Webkit
window.addEventListener("message", receiveMessage, false);
并且必须声明origin函数:
function receiveMessage(event)
{
// do something with event.data;
}
场外iframe还必须通过origin正确发送事件:
任何窗口都可以在任何其他窗口上随时访问此方法,无论窗口中文档的位置如何,都可以向其发送消息。 因此,用于接收消息的任何事件侦听器必须首先使用origin和可能的source属性检查消息发送者的身份。 这不能低估:如果未检查origin和可能的source属性,则会启用跨站点脚本攻击。
资料来源:[https://developer.mozilla.org/en/DOM/window.postMessage]
php什么是同源策略,javascript - 绕过同源策略的方法相关推荐
- 浏览器攻击框架BeEF Part 4:绕过同源策略与浏览器代理
前言 从这一章开始,正式进入了攻击阶段.BeEF提供了大量的攻击模块,可以直接使用.除了已有的模块,BeEF还提供了API,可以使用API来自行开发新的攻击模块.这一章,要介绍如何绕过同源策略,还会介 ...
- 6379端口恶意扫描_DNS重绑定的利用:端口扫描与绕过同源策略
译文声明 本文是翻译文章,文章原作者bookgin,文章来源:http://bookgin.tw 原文地址:https://bookgin.tw/2019/01/05/abusing-dns-brow ...
- 同源策略及其绕过详解
同源策略及其绕过详解 前言 最近在看吴翰清写的 白帽子讲 web安全 一书,遇到同源策略一词,我便开始深入学习相关内容,查阅了许多资料后,写该博客梳理.记录所学知识 基础知识 Origin(源) Or ...
- php什么是同源策略,安全 初探同源策略及其安全
今天了解了一些有关浏览器同源策略以及CSRF***之后,觉得挺有意思的,所以特此总结一波,给自己囤一点干货这篇文章主要包含三个大的方面: 1.同源策略是什么及其作用 2.如何绕过同源策略 3.CSEF ...
- 浏览器同源策略及跨域的解决方法
浏览器同源策略及跨域的解决方法 参考文章: (1)浏览器同源策略及跨域的解决方法 (2)https://www.cnblogs.com/laixiangran/p/9064769.html 备忘一下.
- 关于同源与跨域问题,以及解决方法(八种)
一,什么是跨域 就是跨域名,跨端口,跨协议 例如:如果有两个服务器,服务器A和服务器B,服务器A上存储了php数据,script,甚至是css这些文件,而你在服务器B上只写了html,然后你所在的服务 ...
- JavaScript版本的策略模式
俗话说,条条大路通罗马.在美剧<越狱>中,主角Michael Scofield就设计了两条越狱的道路.这两条道路都可以到达靠近监狱外墙的医务室. 同样,在现实中,很多时候也有多种途径到达同 ...
- JS垃圾回收——和其他语言一样,JavaScript 的 GC 策略也无法避免一个问题:GC 时,停止响应其他操作,这是为了安全考虑...
JavaScript 内存管理 & 垃圾回收机制 标记清除 js 中最常用的垃圾回收方式就是标记清除.当变量进入环境时,例如,在函数中声明一个变量,就将这个而变量标记为"进入环境&q ...
- 负载均衡策略_负载均衡策略
负载均衡策略有哪些?在实际应用中,我们可能不想仅仅是把客户端的服务请求平均地分配给内部服务器,而不管服务器是否宕机.而是想使Pentium III服务器比Pentium II能接受更多的服务请求,一台 ...
- 绕过Windows正版验证新方法
主题 : 绕过Windows正版验证新方法 | | | 收件箱 如果你的Windows安装出现问题,或者某些难以启齿的原因让你无法从Windows 微软Update网站,在选择"E ...
最新文章
- Xstream util xml 与 bean之间互转
- Redis源码研究—基础知识
- S01E05 Android体系结构
- Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
- Python入门100题 | 第014题
- html文件url_for加载静态文件
- android开发启动画面,Android开发笔记——如何正确实现App启动页
- 构造函数、原型、继承原来这么简单?来吧,深入浅出
- Hibernate框架之入门配置
- Eclipse项目上传码云、从码云上检出项目、修改检出项目后在提交到码云、看此篇即可
- 45.Android 第三方开源库收集整理(转)
- delphi连接sql server的字符串2011-10-11 16:07
- Java定时器quartz停止
- C#拾遗系列(5):泛型委托
- L1-012 计算指数 (5 分)—团体程序设计天梯赛
- 学术会议查询 边缘计算_我设计了可以预测边缘性的“学术不诚实”的AI系统(SMART课堂)...
- 好程序员web前端培训分享JavaScript框架
- 使用Matlab产生m序列(PN序列的一种)
- 大厂员工涌入外包:中年失业,外包已是我最好的选择
- 分销系统的用户关系数据库设计~
热门文章
- 1038. Recover the Smallest Number
- 如何判断数据库中是否已经存在某个临时表?
- success.php
- 再议 封装、继承、多态
- 20200113每日一句
- latex longtable and supertabular 跨页表格
- 发现一个有意思的英文期刊 China and the World Ancient and Modern Silk Road
- Atitit 项目管理之沟通管理概论问题管理 艾提拉著 跨语言沟通 群组沟通 书面沟通 目录 1. 沟通方式	2 1.1. 书面沟通 vs 当面沟通	2 1.2. 群组沟通(公开沟通) vs
- paip.语义分析--分词--常见的单音节字词 2_deDuli 单字词 774个
- paip.c++ qt 网页爬虫 的 网络编程 总结