【问题标题】:Can a third-party JS access first-party localstorage?第三方JS可以访问第一方localstorage吗?
【发布时间】:2017-06-28 02:17:25
【问题描述】:

当我在托管在 abc.com 的网页上嵌入托管在 xyz.com 上的 JS 时,似乎 xyz.com/test.js 可以读取和写入在 abc.com 上设置的所有键值。这不是被认为是巨大的安全漏洞吗?当您计划使用来自 Google Analytics 的任何第三方 JS 时,是否建议网站不要在本地存储中存储任何用户敏感信息?

这是一个例子 - https://jsfiddle.net/kuldeepk/eqawezd6/1/

localStorage.setItem('first-party', 'first-party');
window.Test.setKeyValue('third-party', 'third-party')
console.log(window.Test.getKey('first-party'))
console.log(localStorage.getItem('third-party'));

window.Test在第三方JS中声明

【问题讨论】:

  • 是的,页面上加载的任何 JS 都可以从页面的域访问 cookie 和 localStorage。这就是您不应该在浏览器中存储敏感数据的原因之一(如果必须,请在服务器端对其进行加密并在服务器端对其进行解密)。在法国,我们的法律禁止在未经用户同意的情况下在本地存储数据,以及存储未加密的敏感数据,如用户电子邮件、密码等。
  • 有趣。我很困惑为什么浏览器允许这个安全漏洞,而 cookie 却没有同样的设计缺陷。
  • “Cookies 没有同样的设计缺陷” ? jsfiddle.net/scwo1ba9
  • 在该示例中,cookie 设置在同一个域中。 xyz.com 无法读取 abc.com 中设置的 cookie
  • 有一个简单的测试你可以在你的本地机器上进行检查。在您的主机文件上映射一个完全不同的域,创建一个读取应用程序中存储的 js 文件并将其包含在您的 index.html 中,但使用此自定义域。例如,当您从本地主机访问 index.html 时,脚本甚至可以读取从另一个域加载的存储值。

标签: javascript browser cross-domain local-storage


【解决方案1】:

是否建议网站不要存储任何用户敏感信息

不,你不使用任何第三方 JS

访问您网站的每个人都可以阅读 js 或 html 中的所有内容,无论它是在本地存储中还是在前端的其他地方。

只需按 F12 并查看 stackoverflow 提供的整个前端源代码。

【讨论】:

  • 是的,我理解那部分。我指的不是用户名/密码之类的东西,但即使是一般的应用程序相关数据,似乎这些数据也可以在第一方不知情的情况下被第三方 js 篡改。 Cookie 并非如此。我想我只是对这整个循环孔感到困惑
  • 也可以读取 cookie。 @KuldeepKapade。只需点击您问题下方的 blex 小提琴即可。
  • 在该示例中,cookie 设置在同一域中。 xyz.com 无法读取在 abc.com 中设置的 cookie
  • @KuldeepKapade xyz.com 脚本可以在您将其加载到您的页面时读取您的 cookie。没有什么可以阻止它将您的数据发送到他们自己的服务器以供以后使用。本地存储也是如此。他们都有那个“缺陷”......
猜你喜欢
  • 2021-11-14
  • 2013-12-08
  • 2019-03-31
  • 2021-05-01
  • 1970-01-01
  • 2018-11-10
  • 1970-01-01
  • 2020-03-31
  • 2011-04-06
相关资源
最近更新 更多