以下内容摘自 Mozilla 的网站:
与大多数 Web 存储解决方案一样,IndexedDB 遵循同源策略。因此,虽然您可以访问域内存储的数据,但您无法跨不同域访问数据。
我了解从 Javascript 访问不同域时的同源策略。但我不明白这如何适用于 IndexedDB。我认为 IndexedDB 只是一个数据库,您可以在其中存储您想要的任何内容。IndexedDB 如何知道有关域的任何信息,为什么它甚至会关心它是否知道?即使我设法从不同的域检索数据(这是可能的),我仍然可以将该数据存储在数据库中。那么域与此有什么关系呢?
我正在构建一个在 Electron 中运行并且可以访问来自多个域的数据的单页 Web 应用程序。我将这些数据存储在 IndexedDB 数据库中。大概我只会有一个数据库。只是不清楚在这种情况下同源策略会是什么(如果有的话)。
如果我的 Web 应用程序没有导航到一个 url,而只是使用 XMLHttpRequest 从后端服务检索数据,那么从技术上讲,没有域。
在这种情况下,SOP 指的是访问 IndexedDB 的脚本的来源。来自 example.com/foo.js 的脚本可以访问 example.com 的 IndexedDB,但来自 evil.com/bar.js 的脚本无法访问它。更重要的是,您访问的每个域都有不同的 IndexedDB 实例、本地存储、会话存储等。
此外,这与无法将来自 evil.com 的数据写入 example.com 的数据库无关。这是关于来自 evil.com 的脚本从 example.com访问数据库。所以浏览器不会用它的来源标记数据,而是用脚本标记数据。这是有道理的,因为问题在于恶意脚本,而不是数据本身。
| 归档时间: |
|
| 查看次数: |
1193 次 |
| 最近记录: |