面试常问到的问题(2)

1.token可以放在cookie里吗?

当被问这个问题的时候,第一时间要想到安全问题。通常回答不可以,因为存在CSRF(跨站请求伪造)风险,攻击者可以冒用Cookie中的信息来发送恶意请求。解决CSRF问题,可以设置同源检测(Origin和Referer认证),也可以设置Samesite为Strict。最好嘛,就是不把token放在cookie里咯。

(一个评论:1.你说选择localStroage是因为cookie有会被xss攻击的安全性问题,后面又说local也会遭受xss攻击,实际上localStorage是易受跨站脚本攻击(XSS)的影响,cookie受到跨站请求伪造(CSRF)攻击2.你说选择localStroage是因为localStorage 中的数据不会自动发送到服务器并且可以加密处理,这理由不太合理啊,local既然存了token,难道你请求的时候不会携带token吗,cookie设置SameSite属性和Secure属性,可以控制cookie是否随着每个请求自动发送到服务器以及是否只在HTTPS连接中发送,并且cookie存的数据也能加密啊)

2.说说封装组件的思路

要考虑组件的灵活性、易用性、复用性。 常见的封装思路是,对于视图层面,如相似度高的视图,进行一个封装,提供部分参数方便使用者修改。对于业务复用度较高的,提取出业务组件。

3.cookie 和 localStorage 的区别

CookieLocalStorage 是两种用于在浏览器中存储数据的机制,它们在以下方面有一些区别:

  1. 存储容量: Cookie 的存储容量通常较小,每个 Cookie 的大小限制在几 KB 左右。而 LocalStorage 的存储容量通常较大,一般限制在几 MB 左右。因此,如果需要存储大量数据,LocalStorage 通常更适合;
  2. 数据发送: Cookie 在每次 HTTP 请求中都会自动发送到服务器,这使得 Cookie 适合用于在客户端和服务器之间传递数据。而 localStorage 的数据不会自动发送到服务器,它仅在浏览器端存储数据,因此 LocalStorage 适合用于在同一域名下的不同页面之间共享数据;
  3. 生命周期:Cookie 可以设置一个过期时间,使得数据在指定时间后自动过期。而 LocalStorage 的数据将永久存储在浏览器中,除非通过 JavaScript 代码手动删除;
  4. 安全性:Cookie 的安全性较低,因为 Cookie 在每次 HTTP 请求中都会自动发送到服务器,存在被窃取或篡改的风险。而 LocalStorage 的数据仅在浏览器端存储,不会自动发送到服务器,相对而言更安全一些

猜你喜欢

转载自blog.csdn.net/qq_46617584/article/details/131787052