我一直在尝试使用innerHTML来尝试找出我需要在我正在处理的webapp上加强安全性的地方,并且我在Mozilla文档上遇到了一个我没想过的有趣的注入方法.
var name = "<img src=x onerror=alert(1)>";
element.innerHTML = name; // Instantly runs code.
Run Code Online (Sandbox Code Playgroud)
它让我想知道.)如果我应该使用innerHTML,而b.)如果它不是一个问题,为什么我一直在避免其他代码插入方法,特别是eval.
让我们假设我在浏览器上运行javascript客户端,并且我采取必要的预防措施以避免在易于访问的功能中暴露任何敏感信息,并且我已经得到了一些任意指定的点,我已经确定innerHTML不是安全性风险,我已经优化了我的代码,以至于我不一定担心性能受到轻微打击......
我是否通过使用eval创建任何其他问题?除了纯代码注入之外还有其他安全问题吗?
或者,是innerHTML,我应该表现出同样的关心吗?它同样危险吗?