前段时间写了个先后端分离的项目,先后端都是我一我的完成,通讯都是经过接口进行的,这时候就要面对接口安全的问题,api没法使用laravel框架提供的csrf-token等安全措施,我只作了个简单的基于session的验证。个人全部api都是经过ajax来进行的,心想既然有跨域限制,不容许跨域的话是否是就万事大吉了呢?跨域限制仅仅是浏览器的行为吗?服务器有跨域限制吗?html
(此处有误,可使用csrf-token,可是在发起post请求前必须获取到cookie中的token,将其加入header中,能够加在单页的入口html里,或者来一次get请求)laravel
若是只是浏览器的行为,那么就能轻松绕过了,没有意义。web
带着这个问题查了一些资料,讲同源策略的不少,不少地方都说这是web安全的基石,可是没看到哪里明确的提到这只是浏览器的行为,和服务端、http没有关系。ajax
因而本身作个实验咯,实验步骤以下:后端
分别进行以下测试:api
测试结果:除了第二种状况,其余的均能进行跨域请求,结论就是跨域限制仅仅是浏览器的行为,经过代理服务器,或者其余工具发送请求就能轻松绕过。跨域
那么,同源策略是否是没有什么卵用呢?
错,同源策略是web安全的基石,固然很重要了浏览器
由于:安全
随着互联网的发展,"同源政策"愈来愈严格。目前,若是非同源,共有三种行为受到限制。
(1) Cookie、LocalStorage 和 IndexDB 没法读取。
(2) DOM 没法得到。
(3) AJAX 请求不能发送。
若是在其余域名能读qq.com的cookie那就至关于它能拿到登录权限服务器
reference:
浏览器同源政策及其规避方法-阮一峰
浏览器的同源策略-mdn