2017-02-09 165 views
0

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

下面是一个例子 - 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

+0

是的,任何加载在页面上的JS都可以从页面的域中访问cookie和localStorage。这是您不应该在浏览器中存储敏感数据的原因之一(如果您必须,请将其加密并将其解密到服务器端)。在法国,我们有法律禁止在未经用户同意的情况下在本地存储数据,并存储非加密的敏感数据,如用户电子邮件,密码等。 – blex

+0

有趣。我很困惑为什么浏览器允许这个安全漏洞,而cookie不会遭受同样的设计缺陷。 –

+0

_“饼干不会遭受同样的设计缺陷”_? https://jsfiddle.net/scwo1ba9/ – blex

回答

2

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

地狱不,使用你没有使用任何第三方JS

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

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

+0

是的,我理解这一部分。我并没有提到用户名/密码类型的东西,但即使是一般应用程序相关的数据,似乎这些数据可能会被第三方js篡改,而第一方并不知道它。 Cookie不是这种情况。我想我只是困惑于整个循环漏洞 –

+0

也可以读取cookie。 @KuldeepKapade。只需在您的问题下点击blex'小提琴。 – baao

+0

在该示例中,cookie设置在相同的域中。在abc.com中设置的cookie不能被xyz.com读取 –