如何从 Safari 清除所有 HTML5 本地存储?

Arj*_*jan 11 safari privacy local-storage

它似乎stackauth.com使用了一些我的 Safari 没有显示的本地存储,因此无法删除。那么,一般来说:如何确保从 Safari 中删除所有本地存储?

一些背景和细节:

HTML5本地存储允许网站存储在计算机上的信息。(这有点像 cookie,但内容不会自动发送到服务器。)就像一个人曾经登录到(新的)Twitter 网站,然后在查看该网站并将以下内容粘贴到位置栏中时会显示很多详细信息,即使当前未登录

javascript:alert(localStorage.getItem(':USER:'));
Run Code Online (Sandbox Code Playgroud)

要摆脱这些数据:在谷歌浏览器中“删除 cookie 和其他站点数据”可以解决问题。在 Firefox 中,每当删除 cookie 时,它​​就会被删除。在 Safari 中没有那么多。

在 Safari 中,安全性中似乎有一个相关的首选项,按钮“显示数据库”。但是:Safari 中的“显示数据库”列表并未提及Stack Exchange global network auto-login使用的stackauth.com。使用“全部删除”后,我仍然在该站点上得到结果:

javascript:alert(localStorage.getItem('GlobalLogin'));
Run Code Online (Sandbox Code Playgroud)

我可以使用javascript:localStorage.clear();. 但是我需要知道一个站点已经存储了数据。这个问题不仅仅是关于 StackAuth;我想确保其他网站也不会从列表中隐藏。

(我在 Mac 上,在最新的 OS X 上使用最新的 Safari。)

当弹出窗口太大而看不到任何关闭按钮时,按 Esc 或 Return 关闭警报对话框。

Arj*_*jan 5

在最新版本的 Safari 中(我现在使用 5.1),可以使用 Safari » 重置 Safari » 删除所有网站数据来清除本地存储。或者通过使用 Safari » 首选项 » 标签页隐私 » Cookie 和其他网站数据 » 删除所有网站数据。甚至在查看同一个隐私标签页上的详细信息时使用全部删除。安全选项卡不再显示任何用于查看数据库的按钮。

更多细节,也适用于旧版本:

在我的 Mac 上,我找到了文件夹~/Library/Safari/LocalStorage,其中包含用于使用本地存储† 的每个站点的文件,其创建日期设置为我第一次访问每个站点。在 Windows 上,这可能位于%APPDATA%\Apple\Safari或 之类的文件夹中%APPDATA%\Apple Computer\Safari

删除所有这些文件并重新启动 Safari,显然也清除了 StackAuth 的数据。

但是,登录到随机 Stack Exchange 站点再次为我获取 StackAuth 数据和上述文件夹中的文件,而从未提示允许(我的 Safari 首选项显示“数据库存储:询问之前不允许”),并且没有显示在“显示数据库”列表中的域。这也发生在隐私浏览模式中。

这似乎是由 HTML5 Web Databases和 HTML5 Web Storage(后者包括本地存储)之间的差异引起的。Chrome为 Twitter显示了两者

Google Chrome 中的数据库和本地存储

显然 Safari 只警告数据库,而不是本地存储?也许阻止本地存储将与阻止 Adob​​e Flash离开其隐私跟踪一样困难。该规格说明:

用户代理应该仅出于安全原因或当用户要求这样做时才使本地存储区域中的数据过期。

让我们希望有人知道更简单的方法,或者我们在未来的版本中获得更多控制。(我为此向 Apple 提交了功能请求。)

就我而言,我发现了可追溯到 2009 年 3 月的多达 5,904 个项目。甚至我自己的域(我确定没有使用本地存储)也列出了每个 8kb 的文件。调查显示,Alexey Ruzanov 的FlashBlock 用户脚本也使用本地存储,因此无论是否使用本地存储,也不管是否使用 Flash,访问的每个站点都会生成一个文件。