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 - 绕过同源策略的方法相关推荐

  1. 浏览器攻击框架BeEF Part 4:绕过同源策略与浏览器代理

    前言 从这一章开始,正式进入了攻击阶段.BeEF提供了大量的攻击模块,可以直接使用.除了已有的模块,BeEF还提供了API,可以使用API来自行开发新的攻击模块.这一章,要介绍如何绕过同源策略,还会介 ...

  2. 6379端口恶意扫描_DNS重绑定的利用:端口扫描与绕过同源策略

    译文声明 本文是翻译文章,文章原作者bookgin,文章来源:http://bookgin.tw 原文地址:https://bookgin.tw/2019/01/05/abusing-dns-brow ...

  3. 同源策略及其绕过详解

    同源策略及其绕过详解 前言 最近在看吴翰清写的 白帽子讲 web安全 一书,遇到同源策略一词,我便开始深入学习相关内容,查阅了许多资料后,写该博客梳理.记录所学知识 基础知识 Origin(源) Or ...

  4. php什么是同源策略,安全 初探同源策略及其安全

    今天了解了一些有关浏览器同源策略以及CSRF***之后,觉得挺有意思的,所以特此总结一波,给自己囤一点干货这篇文章主要包含三个大的方面: 1.同源策略是什么及其作用 2.如何绕过同源策略 3.CSEF ...

  5. 浏览器同源策略及跨域的解决方法

    浏览器同源策略及跨域的解决方法 参考文章: (1)浏览器同源策略及跨域的解决方法 (2)https://www.cnblogs.com/laixiangran/p/9064769.html 备忘一下.

  6. 关于同源与跨域问题,以及解决方法(八种)

    一,什么是跨域 就是跨域名,跨端口,跨协议 例如:如果有两个服务器,服务器A和服务器B,服务器A上存储了php数据,script,甚至是css这些文件,而你在服务器B上只写了html,然后你所在的服务 ...

  7. JavaScript版本的策略模式

    俗话说,条条大路通罗马.在美剧<越狱>中,主角Michael Scofield就设计了两条越狱的道路.这两条道路都可以到达靠近监狱外墙的医务室. 同样,在现实中,很多时候也有多种途径到达同 ...

  8. JS垃圾回收——和其他语言一样,JavaScript 的 GC 策略也无法避免一个问题:GC 时,停止响应其他操作,这是为了安全考虑...

    JavaScript 内存管理 & 垃圾回收机制 标记清除 js 中最常用的垃圾回收方式就是标记清除.当变量进入环境时,例如,在函数中声明一个变量,就将这个而变量标记为"进入环境&q ...

  9. 负载均衡策略_负载均衡策略

    负载均衡策略有哪些?在实际应用中,我们可能不想仅仅是把客户端的服务请求平均地分配给内部服务器,而不管服务器是否宕机.而是想使Pentium III服务器比Pentium II能接受更多的服务请求,一台 ...

  10. 绕过Windows正版验证新方法

    主题 :  绕过Windows正版验证新方法   | | | 收件箱   如果你的Windows安装出现问题,或者某些难以启齿的原因让你无法从Windows 微软Update网站,在选择"E ...

最新文章

  1. Xstream util xml 与 bean之间互转
  2. Redis源码研究—基础知识
  3. S01E05 Android体系结构
  4. Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
  5. Python入门100题 | 第014题
  6. html文件url_for加载静态文件
  7. android开发启动画面,Android开发笔记——如何正确实现App启动页
  8. 构造函数、原型、继承原来这么简单?来吧,深入浅出
  9. Hibernate框架之入门配置
  10. Eclipse项目上传码云、从码云上检出项目、修改检出项目后在提交到码云、看此篇即可
  11. 45.Android 第三方开源库收集整理(转)
  12. delphi连接sql server的字符串2011-10-11 16:07
  13. Java定时器quartz停止
  14. C#拾遗系列(5):泛型委托
  15. L1-012 计算指数 (5 分)—团体程序设计天梯赛
  16. 学术会议查询 边缘计算_我设计了可以预测边缘性的“学术不诚实”的AI系统(SMART课堂)...
  17. 好程序员web前端培训分享JavaScript框架
  18. 使用Matlab产生m序列(PN序列的一种)
  19. 大厂员工涌入外包:中年失业,外包已是我最好的选择
  20. 分销系统的用户关系数据库设计~

热门文章

  1. 1038. Recover the Smallest Number
  2. 如何判断数据库中是否已经存在某个临时表?
  3. success.php
  4. 再议 封装、继承、多态
  5. 20200113每日一句
  6. latex longtable and supertabular 跨页表格
  7. 发现一个有意思的英文期刊 China and the World Ancient and Modern Silk Road
  8. Atitit 项目管理之沟通管理概论问题管理 艾提拉著 跨语言沟通 群组沟通 书面沟通 目录 1. 沟通方式 2 1.1. 书面沟通 vs 当面沟通 2 1.2. 群组沟通(公开沟通) vs
  9. paip.语义分析--分词--常见的单音节字词 2_deDuli 单字词 774个
  10. paip.c++ qt 网页爬虫 的 网络编程 总结