多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] ## 认证授权 **认证(Authentication)**:验证你身份的凭据,通过这个凭据,系统得知你就是你,也就是说系统存在你这个用户。所以,Authentication被称为身份/用户验证(你是谁?) **授权(Authorization)**:发生在Authentication(认证之后)。主要掌握我们访问系统的权限。比如有些特点的资源只能具有特定的权限的人才能访问比如admin(你有权限干什么) ### 什么是Cookie?Cookie的作用是什么?如何在服务端使用Cookie? Cookies和Session都是用来跟踪浏览器用户身份的会话方式,但两者的应用场景不太一样。 Cookie:Cookies是某些网站为了辨别用户身份而存储在用户本地终端上的数据(通常经过加密)。简单来说:Cookies存放在客户端,一般用来保存用户信息。 ### Cookie的一些应用案例 我们在Cookie中保存已经登录过的用户信息,下次访问网站的时候页面可以自动帮你登录的一些基本信息给填了。除此之外,Cookie还能保存用户首选项,主题和其他设置信息。 使用Cookie保存Session或者token。向后端发送请求的时候带上Cookie,这样后端就能取到Session或者token了。这样就能记录用户当前的状态。因为HTTP协议是无状态的。 **Cookie还可以用来记录和分析用户行为**。举个简单的例子你在网上购物的时候,因为HTTP协议是没有状态的。如果服务器想要获取你在某个页面停留状态或者看了那些商品,一种常用的方式就是将这些信息存放在Cookie ### Cookie和Session有什么区别?如何使用Session进行身份验证? #### session Session的主要作用就是通过服务端记录用户的状态。 Cookie 数据保存在客户端(浏览器端),Session 数据保存在服务器端。相对来说 Session 安全性更高。如果使用 Cookie 的一些敏感信息不要写入 Cookie 中,最好能将 Cookie 信息加密然后使用到的时候再去服务器端解密。 ### 如果没有cookie的话Session还能用吗? 一般是通过Cookie来保存SessionID,假如你使用了Cookie保存SessionID的方法的话,如果客户端禁用了Cookie,那么Session就无法正常工作 但是,我们可以将SessionID放在url里https://javaguide.cn/?session_id=xxx。, 这种方案的话可行。但是安全性和用户体验感降低。 ### 为什么Cookie无法防止CSRF攻击,而token可以? **CSRF**:一般翻译为跨站请求伪造。 例子:小壮登录了某网上银行,他来到了网上银行的帖子区,看到一个帖子下面有一个链接写着“科学理财,年盈利率过万”,小壮好奇的点开了这个链接,结果发现自己的账户少了10000元。这是这么回事呢?原来黑客在链接中藏了一个请求,这个请求直接利用小壮的身份给银行发送了一个转账请求,也就是通过你的 Cookie 向银行发出请求。 进行Session认证的时候,我们一般使用Cookie来存储SessionId。登录成功之后会生成一个cookie存放在客户端。客户端每次访问的时候都会带上这个cookie来访问。 利用token的话。我们一般会将token存放在local storage中,然后我们在前端通过某些方式(get post)给每个请求加上token,这样就不会有csrf漏洞的问题。 >[danger] 需要注意的是XSS :无论Cookie还是token都是无法避免的。 > ———————————————— 版权声明:本文为CSDN博主「知道的越多 那么不知道的就越多」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_42061487/article/details/108118479