Same-Origin Protection (SOP)

0x00 什么是同源策略(SOP)

在Web安全中,SOP是一个非常重要安全策略,必须要弄懂才能对很多攻击有更加清晰的理解,那什么是同源策略呢?下面是我本人的理解:

同源策略是一个浏览器中内建的安全策略,它确保不同源的网站不能互相作用或者互相交换。

  • 不同源指的是协议(https,http,ftp…),不同端口(80,443,22,21),不同域名。

  • 不能互相作用或者互相交换是指:A网站即使和B网站不同源,但仍然可以发送request到B网站,这个请求在B网站还是会处理的,但A网站不能读取response,总结一句就是:跨域请求是可以发去的,但是请求响应response被浏览器堵塞了,所以说同源策略是限制了不同源的读,但不限制不同源的写

  • 由于同源策略的限制,跨域的ajax请求不会带cookie,然而script/iframe/img等标签却是支持跨域的,所以在请求的时候是会带上cookie的,这使得CSRF攻击有可乘之机

0x01 CSRF攻击

  • 由于同源策略的限制,跨域的ajax请求不会带cookie,然而script/iframe/img等标签却是支持跨域的,所以在请求的时候是会带上cookie的。如果用户登陆了Abank.com,那么cookie里面就有了tocken,同时又打开了另外一个标签页访问了evil.com,这个网页里面有一个iframe:
<iframe src="http://Abank.com/app/transferFunds?amount=1500&destinationAccount="attackeraccountnumber" >
  • 防CSRF攻击的策略就是将token添加到请求的参数里面,也就是说每个需要验证身份的请求都要显式地带上token值,目的就是让请求不可预知,就算攻击者得到了你的登录token,也没有办法构造转账的请求,因为转账的请求带有一个不可预知的,随机的token作为保护,当然也可以加入一些人机交换,例如验证码之类的

0x02 Cross-domain 和 Silverlight 的跨越配置文件

这两个配置文件必须设置严格,防止不必要跨域

Refer link

https://www.gracefulsecurity.com/cross-domain-flash-and-silverlight-crossdomain-xml/

https://www.gracefulsecurity.com/what-is-cross-site-request-forgery/

http://www.veracode.com/security/csrf

http://yincheng.site/cross-domain