链接:https://blog.csdn.net/m0_37138074/article/details/125628352
一、token与cookie的区别?
1.1、cookie是浏览器用来存储本地信息的文件(4KB);token(令牌)是由服务器按一定算法生成的密令。
1.2、服务器生成的用户识别信息必将响应给浏览器的cookie中存储;token可以由前端指定存放到localStorage、sessionStorage或cookie中。
1.3、每次浏览器发起HTTP请求都会自动携带cookie内容一起发送给服务器;token严格来说只是程序员定义的字符串,没有任何自主功能,所以浏览器发起的HTTP请求不会自动携带token字符串。
1.4、cookie在用户登出后会注销;token不会,因为是一个字符串,但可以手动增加相关操作去实现这个功能。
二、token是如何避免CSRF攻击的?
2.1、CSRF(跨域请求伪造)的攻击特点是:需要用户自己点击恶意网站的隐藏HTTP请求链接,这个发出去的HTTP请求会自动的携带上你的cookie信息给服务器,于是完成了请求伪造攻击。(就是恶意网站利用了cookie会被HTTP请求自动添加的特性加以利用攻击)
2.2、token因为是自定义字符串,所以HTTP请求不会自动携带它,CSRF也就无法得手了(即使用户点击了恶意网站的请求也无法被拿走token),之所以说token天然防CSRF,但也不是绝对的,前提是不把token存储到浏览器的cookie里。
2.3、【补充】Ajax跨域请求不会自动携带cookie,源自浏览器的ajax同源策略,要想ajax自动携带cookie,需要在服务端进行配置。
标签:HTTP,请求,token,cookie,CSRF,浏览器 From: https://www.cnblogs.com/stepforeward/p/16776778.html