为啥将 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 中比字符串更安全或更好?的主要内容,如果未能解决你的问题,请参考以下文章
为啥将刷新令牌存储在仅 HTTP 的 Cookie 中以防止 CSRF 攻击?