同源策略SOP和跨域资源共享CORS

同源策略SOP

同源是指协议、域名、端口均相同。
同源策略是浏览器行为,限制了来自不同源的“document”或脚本,对当前“document”读取或设置某些属性。

同源策略与CSRF

同源策略不能防止CSRF

同源策略SOP不能防止CSRF的原因是:
1、SOP可以通过html tag加载资源;
2、SOP不阻止接口请求,而是拦截请求结果;

跨域资源共享CORS

CORS有以下两种:
1、简单请求
  • a、请求方法使用GET、POST或HEAD
  • b、HTTP的头信息不超出以下几种字段
    Accept
    Accept-Language
    Content-Language
    Last-Event-ID
    Content-Type设为application/x-www-form-urlencoded、multipart/form-data 或 text/plain
    符合上面两个条件都为CORS简单请求。简单请求都会直接发到服务器,被利用可造成CSRF。
2、非简单请求(即需要进行预检请求):
  • 不符合简单请求要求的请求都需要先发送预检请求(Preflight Request)。
  • 浏览器会在真正请求前发送 OPTION 方法的请求向服务器询问当前源是否符合 CORS 目标,验证通过后才会发送正式请求。
    举两个栗子:使用 application/json 传参的 POST 请求就是非简单请求,会在预检中被拦截;
    使用 PUT 方法请求,也会发送预检请求。
下面几篇文章有更详细介绍

前端网络安全必修 1
跨域资源共享 CORS 详解
前端安全系列之二:如何防止CSRF攻击?

你可能感兴趣的:(同源策略SOP和跨域资源共享CORS)