为啥将 JSON 对象存储在 cookie 中比字符串更安全或更好?

Posted

技术标签:

【中文标题】为啥将 JSON 对象存储在 cookie 中比字符串更安全或更好?【英文标题】:Why would storing a JSON object in a cookie be safer or better than a string?为什么将 JSON 对象存储在 cookie 中比字符串更安全或更好? 【发布时间】:2015-01-22 01:51:53 【问题描述】:

我有一个使用 javascript 获得的 URL 参数列表:

var urlParams = location.search.slice(1);

有人建议我将 URL 参数存储在 cookie 中的 JSON 对象中,而不仅仅是将 urlParams 字符串存储在 cookie 中。

如果我要做的只是将 url 参数与不同的基本 url 连接起来,那么将 URL 参数存储在 JSON 对象中是否有任何优势(安全性或其他)?

【问题讨论】:

没关系,无论格式如何,字符串都是字符串,但由于本地方法可以做到这一点,JSON 通常更容易解析和字符串化。 如果您只是存储一个字符串,那么将其转换为 JSON 没有任何好处。 JSON 是一个字符串,而不是一个对象。 Cookies 只存储字符串 JSON.parse 将一串 JSON 文本转换成一个对象 @adeneo——我认为这有点洗白了。读取和写入 cookie 已经存在了很长一段时间,它们已经被视为一个对象,即作为名称/值对。 【参考方案1】:

您的对象需要先转换为字符串,然后才能将其保存到 cookie。

因此,您的代码将获取一个字符串,将其转换为 JSON 对象,然后将其转换回字符串,然后再将其保存到 cookie 中。

取回您的数据需要读取字符串,转换为 json,然后返回到 urlParams 字符串。

任何可以获取您的urlString cookie 的人也可以获取您的urlParamsAsStringifiedJson cookie。我看不到那里有任何增加的安全性。

另外,您可以考虑使用localStorage,它具有very good browser support,并且可能更适合,具体取决于您的用例。

【讨论】:

以上是关于为啥将 JSON 对象存储在 cookie 中比字符串更安全或更好?的主要内容,如果未能解决你的问题,请参考以下文章

本地存储

本地储存

localStorage本地存储

为啥将刷新令牌存储在仅 HTTP 的 Cookie 中以防止 CSRF 攻击?

为啥浏览器不以保存 cookie 的方式保存 JWT 令牌?

Android开发中为啥很少使用JSON存储数据