| 术语 | 解释 | 备注 |
|---|---|---|
| 跨域 | 两个 URL 的“协议+主机名+端口”3者只要有一个不一致 | http://www.taobao.com/和https://www.taobao.com/ |
| 跨站 | 两个 URL 的 eTLD+1 不相同 | a.github.io 和 b.github.io |
| eTLD | effective top level domain (有效顶级域名) | .com、.co.uk、.github.io |
| eTLD+1 | 有效顶级域名+二级域名 | taobao.com |
浏览器的同源策略是为了限制CSRF攻击,因为我们有些场景确实需要,访问不同域名下的资源,所以需要跨域。
同源策略(Same Origin Policy)是一种约定,它是浏览器最核心最基本的安全功能。所谓的同源是指域名、协议、端口相同。不同源的客户端脚本在没有明确授权的情况下是不允许读写其他网站的资源
如在www.baidu.com的网页下 去访问www.taobao.com 这样则形成了跨域 那么浏览器则会限制响应数据(注意 这里是指限制访问响应的数据 而不是限制访问),也就是拿不到响应的数据,csdn.net域下的页面脚本文件无法拿到baidu.com下的cookies信息
防止恶意网页可以获取其他网站的本地数据。
防止恶意网站iframe其他网站的时候,获取数据。
防止恶意网站在自已网站有访问其他网站的权利,以免通过cookie免登,拿到数据。

django 第一次响应来自某个客户端的请求时,会在服务器端随机生成一个 token,把这个 token 放在 cookie 里。然后每次 POST 请求都会带上这个 token,这样就能避免被 CSRF 攻击。
官方文档中说到,检验token时,只比较secret是否和cookie中的secret值一样,而不是比较整个token。oken字符串的前32位是salt, 后面是加密后的token, 通过salt能解密出唯一的secret。django会验证表单中的token和cookie中token是否能解出同样的secret,secret一样则本次请求合法。
上一篇:Mega-Nerf学习笔记
下一篇:数据库基本操作