每页localStorage?

时间:2016-07-27 09:13:14

标签: javascript html5 security local-storage single-page-application

在HTML5中,是否可以创建只能由单个网页访问的本地存储?

我目前正在尝试编写自包含的单页应用程序的可能性,以及用户是否可以自己托管它们,例如在他们的Dropbox(具有公共文件的一些基本webhosting功能)或在localhost上运行最小的网络服务器。

然后,用户可以从其本地服务器/ Dropbox中的各种来源启动此类HTML应用程序,或者被要求从其他用户Dropbox打开一个。

由于所有这些页面都是从同一个来源(当前https://dl.dropboxusercontent.com)提供的,因此它们都会共享一个localStorage,如果名称发生冲突,可能会干扰功能,并泄漏数据;例如。这样的页面可能想要存储用于访问localStorage中的用户Dropbox帐户的身份验证令牌,但是然后任何其他此类“App”将能够窃取令牌。

我必须在这里说,我是HTML5的新手,并且很可能在这里扩展了预期的使用范围,因为基本的websecurity概念(如同源策略)一直遇到限制 - 特别是在打开时来自本地驱动器的HTML文件,通过file:// uri。

核心意图是允许用户以适用于其移动和桌面设备的方式托管自己的自定义应用程序,方法是利用其现有的Web服务订阅进行托管和数据同步,而不是将其数据移动到其他服务。

2 个答案:

答案 0 :(得分:6)

如上所述here,localStorage的范围是协议,域和端口,没有别的。

通过这种方式,即使通过唯一的页面令牌(即localStorage.set('page1.' + key))为每个localStorage键添加前缀,也不会避免其他页面获取这些信息,因此没有简单的方法可以避免信息泄露。

答案 1 :(得分:0)

您可以使用唯一页面标识符(甚至url)作为加密存储数据的密钥。从理论上讲。