window.sessionStorage.getItem(' anyItem')可以运行客户端DOM存储代码注入

时间:2015-09-22 10:49:44

标签: javascript xss

我的javascript文件中包含此代码。我在我的项目上运行了checkMarx工具,它向我显示了这个

  

Client_DOM_Stored_Code_Injection安全问题

window.sessionStorage.getItem('anyItem')代码上。任何人都有任何线索如何解决这个问题。

提前致谢。

2 个答案:

答案 0 :(得分:0)

我想这是因为任何值都可以存储在localStorage中,这意味着可以存储“邪恶”的字符串代码,从而在检索时执行(例如使用eval)。阅读this,它可能对您有帮助,有一个关于 XSS in localStorage 的示例。

其他有用的链接:How secure is localstorage?

例如,如果你将app存储在localStorage中并以myKey作为密钥,那么任何其他网站都可以通过存储相同的密钥来覆盖它。因此,如果您依赖于从您定义的键中读取值,则无法100%确定它将包含存储的值(意味着您的代码)。
错误,请参阅MDN感谢@Nils

为了防止(或至少尝试)这种攻击,您应该创建一个函数,其中首先评估从localStorage中设置/检索的每个值,以检查它是否包含可能有害的代码。

此外,在您的代码中使用 use_strict ,防止此类内容会很有用,但它仍然可以通过。

修改
根据@SilverlightFox的想法,我已经达到this并发现它很有趣。

答案 1 :(得分:0)

防止代码注入和XSS的更好(现代)解决方案是CSP(内容安全策略)。 我没有使用本地/ sessionStorage进行测试,但值得一试。

此处有更多信息:http://content-security-policy.com/
唯一的缺点是它的浏览器支持(没有IE支持)。