我一直在用 innerHTML 做一些试验,试图找出我需要在我正在开发的 web 应用程序上加强安全性的地方,并且我在mozilla 文档上遇到了一种我没有想到的有趣的注入方法。
var name = "<img src=x onerror=alert(1)>";
element.innerHTML = name; // Instantly runs code.
这让我想知道 a.) 我是否应该使用 innerHTML,以及 b.) 如果这不是问题,为什么我一直在避免使用其他代码插入方法,尤其是 eval。
假设我在浏览器上运行 javascript 客户端,并且我正在采取必要的预防措施以避免在易于访问的函数中暴露任何敏感信息,并且我已经达到了一个任意指定的点,我已经决定 innerHTML 不是安全的风险,并且我已经优化了我的代码,以至于我不必担心性能受到非常小的影响......
我是否通过使用 eval 产生任何其他问题?除了纯代码注入之外,还有其他安全问题吗?
或者,innerHTML 是我应该表现出同样关心的东西吗?是否同样危险?