0

在HTML5中,是否可以創建只能訪問單個網頁的本地存儲?每頁localStorage?

我目前寫自包含單頁的應用試驗的可能性,以及是否有可能爲用戶舉辦他們自己,例如在他們的Dropbox(對公共文件具有一些基本的網絡主機功能)或在localhost上運行最小的網絡服務器。

用戶可以隨後在他的本地服務器/ Dropbox的開始從不同的來源,例如HTML應用程序,或者被要求打開一個從其他用戶的Dropbox。由於所有這些頁面將由相同的來源(當前爲https://dl.dropboxusercontent.com)提供,因此它們將全部共享單個localStorage,如果名稱發生衝突並泄露數據,則這兩個頁面都可能會干擾功能;例如。這樣的頁面可能希望存儲用於訪問用戶Dropbox賬戶的認證令牌localStorage,但隨後任何其他這樣的「App」將能夠竊取令牌。


我要在這裏說,我是新來的HTML5,並且很可能在這裏拉伸使用的預期範圍,因爲我一直運行到限制,由於像同源策略基本websecurity概念 - 特別是通過文件:// uri從本地驅動器打開HTML文件時。

核心意圖是允許用戶以跨移動設備和桌面設備的方式託管他們自己的自定義應用程序,利用他們現有的Web服務訂閱進行託管和數據同步,而不是將其數據移動到另一個服務。

+0

如果可能的話,您可以使用可能對URI敏感的cookie而不是localStorage。如果沒有,您可以嘗試加密localStorage數據,解密私鑰將通過路徑存儲在Cookie中。 –

回答

3

如前所述here,localStorage的是通過協議,域和端口,沒有別的作用域。

因此,即使通過在每個localStorage密鑰前添加一個唯一的頁面標記(即localStorage.set('page1.' + key)),它也不會避免另一個頁面獲取這些信息,因此避免信息泄露並不是一個簡單的方法。

0

您可以使用唯一的頁面標識符(或甚至url)作爲加密存儲數據的密鑰。理論上。

+0

哼,是的,類似於[ZeroBin](https://github.com/sebsauvage/ZeroBin)這樣的URL中的哈希值 – magne4000

+0

對於同一來源的理論性惡意應用程序是不可讀的嗎? – kdb