浏览器中的跨域资源请求
浏览器中的跨域资源请求
同源策略-是针对浏览器所设计的一项安全规定,页面中所渲染的资源(JavaScript脚本除外)都需要符合同源策略才能够正常访问。
在构建 Web 项目或者进行 XSS 攻击时,常常需要进行跨域资源访问。设想这样一个场景:攻击者 Attacker 在网站 A 上注入了一段恶意 JS 代码,用来盗取访问者的浏览器、Cookie、IP 等信息,并通过 ajax 请求将这些信息以参数的形式(GET、POST 皆可)发送至攻击者事先准备好的服务站 B 上。若按同源策略规定,在网站 A 上不能直接请求或者发送数据至网站 B,那么这里就要用到一些跨域资源请求的方法。
通过总结已公开的跨域方法并结合自己的理解和实践,将几种跨域资源请求的方法通过实例 Demo 的形式详细记录如下。
网站 A 要获取网站 B 上的资源内容,跨域方法分为 网站 B 可控
和 网站 B 不可控
两类(可控指能更改 Web 服务器设置或者页面内容)。
网站 B 可控的跨域方法:
- 同主域名下iframe控制document.domain进行跨域
- iframe集合location.hash进行跨域数据获取
- 通过iframe.name跨域传递数据
- 将数据通过 JS 进行直接加载
- html5中的postMessage
- 利用 CORS 进行跨域
网站 B 不可控的跨域方法:
- 代理服务(Proxy)
源地址:http://rickgray.me/2015/09/03/solutions-to-cross-domain-in-browser.html
浏览器中的跨域资源请求
同源策略-是针对浏览器所设计的一项安全规定,页面中所渲染的资源(JavaScript脚本除外)都需要符合同源策略才能够正常访问。
在构建 Web 项目或者进行 XSS 攻击时,常常需要进行跨域资源访问。设想这样一个场景:攻击者 Attacker 在网站 A 上注入了一段恶意 JS 代码,用来盗取访问者的浏览器、Cookie、IP 等信息,并通过 ajax 请求将这些信息以参数的形式(GET、POST 皆可)发送至攻击者事先准备好的服务站 B 上。若按同源策略规定,在网站 A 上不能直接请求或者发送数据至网站 B,那么这里就要用到一些跨域资源请求的方法。
通过总结已公开的跨域方法并结合自己的理解和实践,将几种跨域资源请求的方法通过实例 Demo 的形式详细记录如下。
网站 A 要获取网站 B 上的资源内容,跨域方法分为 网站 B 可控
和 网站 B 不可控
两类(可控指能更改 Web 服务器设置或者页面内容)。
网站 B 可控的跨域方法:
- 同主域名下iframe控制document.domain进行跨域
- iframe集合location.hash进行跨域数据获取
- 通过iframe.name跨域传递数据
- 将数据通过 JS 进行直接加载
- html5中的postMessage
- 利用 CORS 进行跨域
网站 B 不可控的跨域方法:
- 代理服务(Proxy)