同源策略

XSS--------绕过SOP

こ雲淡風輕ζ 提交于 2019-11-30 02:16:34
摘要 如今的WEB标准纷繁复杂,在浏览稍大一些的网站时,细心的人会发现网页上呈现的内容并不仅限于网站自身提供的内容,而是来自一堆五花八门的网站的内容的集合。但有谁会想到同源策略在保护着网民们的安全呢? 了解同源策略是十分有必要的,要深入掌握XSS / CSRF等WEB安全漏洞,不了解同源策略就如同盲人摸象一般,无法说出全貌,更无法应用其进行打击。另外,无论是网银盗号,还是隐私泄露,理解了同源策略,就有助于理解自己面临着什么样的威胁。 0x00 什么是源和同源策略 源就是主机,协议,端口名的一个三元组。 同源策略(Same Origin Policy, SOP)是Web应用程序的一种安全模型,它控制了网页中DOM之间的访问。重要的事情说三遍,它只是个模型,而不是标准(哪怕标准在实现的时候也会千差万别)。同源策略被广泛地应用在处理WEB内容的各种客户端上,比如各大浏览器,微软的Silverlight,Adobe的Flash/Acrobat等等。SOP影响范围包括:普通的HTTP请求、XMLHttpRequest、XSLT、XBL。 0x01 如何判断同源 定义:给定一个页面,如果另一个页面使用的协议、端口、主机名都相同,我们则认为两个页面具有相同的源。 举个例子,我们假设需要比对的目标页面来自这个URI: http://sub.eth.space/level/flower.html

Nginx- 实现跨域访问

我是研究僧i 提交于 2019-11-30 01:19:11
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/m_nanle_xiaobudiu/article/details/80688740 一、什么是跨域 跨域:由于浏览器的同源策略,即属于不同域的页面之间不能相互访问各自的页面内容。详细见下表: 注:同源策略,单说来就是同协议,同域名,同端口 URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js http://www.a.com/script/b.js 同一域名下不同文件夹 允许 http://www.a.com:8000/a.js http://www.a.com/b.js 同一域名,不同端口 不允许 http://www.a.com/a.js https://www.a.com/b.js 同一域名,不同协议 不允许 http://www.a.com/a.js http://70.32.92.74/b.js 域名和域名对应ip 不允许 http://www.a.com/a.js http://script.a.com/b.js 主域相同,子域不同 不允许 http://www.a.com/a

转载:浏览器跨域介绍

廉价感情. 提交于 2019-11-29 18:05:01
转自: https://my.oschina.net/u/4203303/blog/3102954 一、什么是跨域? JavaScript出于 安全 方面的考虑做的 同源 策略的 限制 ,不允许 跨域 访问其他资源。通常跨域请求成功后,浏览器会拒绝响应服务器端返回的结果。 1.出于哪些方面的安全考虑? 同源政策的目的是为了防止恶意网站窃取用户数据信息冒充用户做一些操作。同源限制只是提高攻击成本。如果没有JavaScript同源限制: (1)CSRF攻击 (2)XSS攻击 2.什么是同源? 域名、协议、端口均相同。举例来说, http://www.example.com/dir/page.html 这个网址,协议是 http:// ,域名是 www.example.com ,端口是 80 (默认端口可以省略) 3.做了哪些限制? (1)Window对象之间的跨源通信:无法读取Cookie、LocalStorage 、IndexDB 和获取DOM,但通过以下标签可以跨域访问资源: <img src="URL"> <link href="URL"> <script src="URL"> <iframe src="URL"> <form action="URL" method="get/post"> First name: <input type="text" name="fname">

JSONP跨域GET请求解决Ajax跨域访问问题

风格不统一 提交于 2019-11-27 20:42:11
需求:需要前端web页面异步调用后台的Webservice方法返回信息。 实现方法有多种,本例采用jQuery+Ajax,完成后,在本地调试了一切ok,但是部署到服务器上以后就出现问题了,后台服务调用没有响应,怎么回事?代码没怎么改动,唯一修改的地方就是jQuery的ajax方法中的url地址。难道是这里的问题,经过检查和调试,发现原来是同源策略在作怪,我们知道,JavaScript或jQuery是在Web前端开发中经常使用的动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same- Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档或脚本 在同一域名下的内容。不同域名下的脚本不能互相访问,即便是子域也不行。关于同源策略,读者可百度更详细的解释,这里不再赘述。 但是有时候又不可避免地需要进行跨域操作,这时候“同源策略”就是一个限制了,怎么办呢?采用JSONP跨域GET请求是一个常用的解决方案,下面我们来看一下JSONP跨域是如何实现的,并探讨下JSONP跨域的原理。 这里提到了JSONP,那有人就问了,它同JSON有什么区别不同和区别呢,接下我们就来看看,百度百科有以下说明: JSON(JavaScript Object Notation)

简单说说什么是跨域

我们两清 提交于 2019-11-27 11:09:44
目录 跨域警告的发生 补充: 如何允许跨域 CORS 简单请求的测试: 后端的处理 补充: 发表日期:2019年8月15日 跨域警告的发生 如果你做了一些前后端分离的项目,由于此时前端所在的服务地址与后端所在的服务地址不一样,你可能会遇到一个请求被浏览器拦截了的问题,浏览器在检测到当前页面发起的请求不属于当前域就会将其拦截,这是因为浏览器的“同源策略”。 那么,什么是同源策略呢? 同源策略用于限制页面发起不同域(源)的请求,用于提高请求的安全性。 如果两个页面的协议、端口、IP地址(域名)都相同的话,那么这两个页面就是同源,也就是同一个域。 举例: 以http://192.168.10.1:8080/index.html为对照源, http://192.168.10.1:8080/auth/login.html与它是 同源 ; http://192.168.10.1:8181/index.html与它 不是同源 ,因为端口不一样; http://192.168.10.30:8080/index.html与它 不是同源 ,因为IP地址不一样。 有些人会问,既然域不一样就会拦截,为什么我用了xxxCDN的css文件,这个请求没有被拦截呢? 这里要提一些并不是所有的跨域请求都会被拦截的。 1.通常浏览器不会拦截一些 跨域资源嵌入 的请求。 这种所谓的资源嵌入,就是类似于 <img>

一个前端开发者真的避不开这些问题?结果......

依然范特西╮ 提交于 2019-11-27 03:24:29
跨域,这是每个前端开发都会遇到的问题,确实,这是一个很头疼的问题,你说好好的调个接口你告诉我跨域了,那是谁在搞事情呢?其实你只要用其他非浏览器在去调用接口,就不会碰到跨域的问题了,其实这是浏览器同源策略在搞事情。浏览器对这个可是有理由的:“同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制。”虽然说得这么官方,但其实通过这么一句话,这是一个安全机制,那为啥需要这个一个安全机制呢?首先在浏览器操作中有两大危险场景,一是针对接口的请求,二是针对Dom的查询。假设浏览器没有同源策略。 假设没有同源策略限制 接口请求 :在浏览器中,我们做开发的都知道,有一玩意cookie估计大家都玩过,他主要用来存储一些信息,首先最主要的当然是用来处理登录场景,目的是让服务器端知道是谁发出的请求,假如你请求进行登录,那么服务器端验证通过后就会在相应头假如Set-Cookie字段,然后在下一次在发出请求的时候,浏览器自动就会将cookie附加到Http请求的头字段Cookie中,那服务器就晓得你登录过了。好,知道这个流程后。我们来看一个场景: 1 你打开某宝正在瞅瞅想买个那个啥,正在乐滋滋的逛啊逛,从这个页面点到那个页面。 2 正在你逛的时候,突然有一个美女头像的不认识的好友给你发一个不可描述的链接,然后你口水直流,毫不犹豫打开了。 3