>我正在寻找彻底彻底的饼干替代品;如果我的组织想要将其所有网站替换为使用cookie来代替网络存储,那么我们可以轻松地对该要求说“是”吗?我们假设只使用了最新的浏览器.
> Web存储如何以及以何种方式增强安全性
与cookies相比?它是否有可能危及安全性
在其他方面?有没有任何真实生活经历的人
可以分享利弊吗?
解决方法
Same Origin Policy保护cookie和localStorage不受不相关域的访问.
区别在于localStorage只能通过JavaScript访问,而cookie可以通过JavaScript1访问,并随每个HTTP请求一起发送.
使用localStorage而不是cookie没有太大的安全优势.两者之间的区别在于目标不同:localStorage可用于您只在JavaScript中使用的内容,而Cookie可用于在服务器上存储您需要的内容(以及).
任何有权访问用户计算机浏览器的人都可以访问这两者,并且可以通过在网页上执行的JavaScript访问localStorage和cookie. (对于后者,请参阅下面的例外情况.)
如果您在browser console中输入localStorage或document.cookie,则可以看到此信息.
>您可以在cookie上设置HTTPOnly标志,以便无法通过JavaScript访问它.
如何使用localStorage
由于已经有很多关于使用localStorage的信息,我只会参考两个记录它的网站:
> DOM Storage at the Mozilla Developer Network
> Local Storage at Dive Into HTML5
如何存储数据
数据的存储方式因浏览器而异.下面,我提供有关Mozilla Firefox如何存储Cookie和本地存储的信息.
注意:Mozilla支持部门于this article提供了有关如何查找Firefox配置文件的说明.
饼干
Firefox将您的cookie存储在名为cookies.sqlite的文件中.这是一个SQLite数据库.使用SQLiteStudio打开文件显示数据库包含一个表moz_cookies.
表结构
该表的结构如下:
表内容
以下是我的cookies.sqlite数据库的一部分内容:
localStorage的
Firefox将您的localStorage数据存储在名为webappsstore.sqlite的文件中的配置文件文件夹中.这是一个SQLite数据库.使用SQLiteStudio打开文件显示数据库包含一个表webappsstore2.
表结构
该表的结构如下:
列内容的结构:
>范围:
><反向域名>:< the protocol>:<端口号>
> KEY:
>存储值的名称.
>价值
>储值
>安全
>未使用此列.
>老板
>未使用此列.
表内容
以下是我的webappsstore.sqlite数据库的部分内容:
这与我在网页https://login.persona.org的控制台中键入localStorage时获得的数据相同.
结论
如您所见,浏览器以相同的方式存储来自cookie和本地存储的数据.如果您担心存储在用户计算机上的数据的安全性,localStorage不会提供超过cookie的安全优势.
事实上,它甚至可能是一个更大的风险,因为您可以设置cookie在一定时间后过期,而localStorage将不会过期.因此,保存在localStorage中的数据可能会保留在用户的计算机上的时间比使用cookie时的数据长.
(但是,如果您只需要在单个会话期间存储数据,则可以使用sessionStorage而不是localStorage.)