我的javascript文件中包含此代码。我在我的项目上运行了checkMarx工具,它向我显示了这个
Client_DOM_Stored_Code_Injection安全问题
在window.sessionStorage.getItem('anyItem')
代码上。任何人都有任何线索如何解决这个问题。
提前致谢。
答案 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支持)。