token与cookie的区别?(token是如何避免CSRF攻击?)

链接: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,需要在服务端进行配置。

posted @ 2022-10-10 18:31  每日一小步  阅读(548)  评论(0编辑  收藏  举报