# 同源策略
# 背景:
前后端数据交互经常会碰到请求跨域,什么是跨域,以及有哪几种跨域方式,在xss和csrf的利用上理解同源和跨域是必要的。
- 什么是同源策略
- 常见跨域场景
- 同源策略限制内容
- 突破同源策略的方案
# 1.什么是同源策略
同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到 XSS、CSFR 等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个 ip 地址,也非同源。
# 2.常见跨域场景
当协议、子域名、主域名、端口号中任意一个不相同时,都算作不同域。不同域之间相互请求资源,就算作“跨域”。

# 3.同源策略的限制
1.cookie/localstorage/indexeddb等存储性内容
2.DOM节点
3.ajax发送请求后被浏览器拦截(跨域并不是请求发不出去,请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。归根结底,跨域是为了阻止用户读取到另一个域名下的内容,Ajax 可以获取响应,浏览器认为这不安全,所以拦截了响应。但是表单并不会获取新的内容,所以可以发起跨域请求。同时也说明了跨域并不能完全阻止 CSRF,因为请求毕竟是发出去了。)
# 4.突破同源策略的方案
方案一:jsonp
利用 script 标签没有跨域限制的漏洞,网页可以得到从其他来源动态产生的 JSON 数据。JSONP 请求一定需要对方的服务器做支持才可以。仅支持get方法
方案二:3个标签允许跨域加载资源
<img src=XXX>
<link href=XXX>
<script src=XXX>

wAF识别 →