使用 cookie 来存储客户端的次要细节是否比本地存储更好?

Is using cookies to store minor details of the client better than local storage?

我使用 cookie 来获取令牌等最重要的详细信息。它们是安全的并且是 httpOnly。我还有一些细节要保存在客户端。比如,一旦用户登录,我就会存储 userType(客户 | 内部用户)和一些设置的标志 true/false。我将这些附加详细信息存储在本地存储中,因为客户端正在使用它们执行一些基本任务。将它们移动到 Cookies 并保持它们的 httpOnly : false 是个好主意(因为浏览器 JS 只能在没有 httpOnly 的情况下访问 cookies)?

您是否使用像 Redux 或 Apollo 这样的中央 FE 数据存储?就我个人而言,我会像这样在 FE 数据存储中设置 userType。

对于您将设置为 httpOnly: false 的 cookie。 Cookie 和本地存储之间的安全性大致相同。如果您的网站上 运行 存在恶意脚本,该脚本将能够访问本地存储和非安全 cookie。

每次请求时,客户端都会将 Cookie 传输到服务器。如果传输的数据是服务器经常必须访问的东西——比如会话 cookie,这样服务器就可以轻松地将给定请求与特定用户及其 credentials/settings 联系起来——这就是使用 cookie 的完美情况. httpOnly 使其更加安全,因为只有服务器才能读取它。

如果您要存储的数据 经常被服务器读取,那么 cookie 可能不是正确的选择,因为客户端在每次请求时都会发送 cookie;将数据放入 cookie 可能会导致不必要的开销。

对于客户端需要发送的安全敏感数据,如会话令牌,我建议使用 httpOnly 的 cookie,因为这会使可能的 XSS 攻击更难执行。

对于安全敏感的数据——比如布局首选项——如果数据仅read/written由客户.

对于您的情况,请考虑 userType 和其他标志是否对保密至关重要 - 听起来它们可能不是。然后,如果它们仅供客户端使用,则本地存储是更合适的选择。如果服务器确实偶尔需要使用它们,您可以将其放入非 httpOnly cookies - 或不放入,只要使您的工作流程更轻松即可。