简介
SOP
浏览器的同源策略,依赖浏览器本身实现,一般浏览器都有这个策略。
- 要保护的数据:可信网站的用户数据(如登录后的cookie等)
- 怎么保护:在恶意网站不能AJAX请求可信网站(不同域不能直接请求,防止携带可信网站cookie后黑客网站拿到用户数据);在恶意网站虽然可以通过
<script>等标签可以引用可信网站资源,但不允许读取返回的数据。 - 怎么绕过:JSONP(本网站引用可信网站数据前写好回调函数,调用时带参数告诉可信网站,可信网站返回的js数据包含调用回调函数的逻辑。即需要可信网站配合主动写JS回调);可信网站设置
Access-Control-Allow-Origin以说明此链接允许哪些第三方网站请求(即CORS)。
CSRF
跨站请求伪造,重点是“在恶意网站伪造用户在可信网站的操作”。
- 要保护的数据:对可信网站的用户数据的操作(如操作发送一个请求删除用户数据)
- 怎么攻击:在恶意网站向可信网站发送请求,如果能触发恶意操作则是CSRF攻击。
- 怎么防范:CSRF Token
XSS
跨站脚本攻击,重点是“在用户浏览的可信网站中注入JS以实施攻击”
- 要保护的数据:可信网站的用户数据
- 怎么攻击:黑客通过可信网站存在XSS漏洞的留言板、构造包含脚本的可信网站链接等在可信网站注入JS,用户浏览时触发比如读取cookie并发送到恶意网站等功能。
- 怎么防范:httponly(不允许JS读cookie,只允许浏览器发送);CSP(可信网站通过Content-Security-Policy说明本网站允许请求的第三方);
关系
为什么SOP不能防范CSRF
同源策略只阻止AJAX拿到请求响应结果,其实不阻止发送请求,所以如果黑客行为只要发送就能完成那就不受sop限制,sop本质上是防止黑客网站拿到可信网站数据。
为什么XSS不受SOP限制能往恶意网站发数据
只要恶意网站主动设置了Access-Control-Allow-Origin,则可以不受限制的接收可信网站的请求。