Web协议详解与抓包实战学习系列(十)cookie及session与同源策略

656 阅读2分钟

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,并且伪造请求。


跨域访问行为:

复杂请求与简单请求




服务器的响应头添加Access-Control-Allow-Origin


复杂请求的跨域访问:

第一步:预检请求(必须是option方法)
第二步:真实的复杂请求