Cookie:HTTP的状态管理机制
.
response:
Session
.
练习:
cookie所带来的的问题:cookie会存有客户的隐私信息,不同的站点之间访问对方的cookie如上述的例子(这个例子是因为是图片的下载所有没有同源限制,并且是第三方写入cookie,当防卫第三方网站的时候它并不能读取第一方网站的cookie)
解决方法:同源策略
CSRF: 表单提交为了可用性取消了同源限制,允许第三方网站脚本发起访问,并携带之前由原始网站提供的cookie,原始网站只认cookie信息导致了不知道是脚本访问的站点,允许脚本登录操作
解决方法:https://zhuanlan.zhihu.com/p/61827277
思路:CSRF利用的是在第三方请求的时候虽然可以发起在请求头中带有cookie,但是它无法读取cookie的值,如果请求的时候在请求头中添加token:token_value,那么就可以认出该操作是用户做的还是,其他第三方做的。
1. 利用refere来判断请求来源,缺点:不支持refere兼容性,局限性
2. 利用token来预防csrf:
1)Synchronizer Tokens:通过响应页面时将 token 渲染到页面上,在 form 表单提交的时候通过隐藏域提交上来。例如掘金的本页面,可以看出表单提交的时候有token,但是在cookie,sessionstorage,localstorage中都没有token的影子。
2)Double Cookie Defense:将 token 设置在 Cookie 中,在提交 post 请求的时候提交 Cookie,并通过 header 或者 body 带上 Cookie 中的 token,服务端进行对比校验。这里在第三方域读取不到第一方域的cookie中的taoken值,因此在第一方提交表单和第三方提交表单会导致请求中存在差别。
上面第二种方法的缺点:利用XSS注入一段脚本可以获取第一方页面的cookie,并且伪造请求。