我正在查看 WebGoat 练习,有一个问题要求您使用 img 标签创建一个 JavaScript 警报。
他们的解决方案是:
<img src=x onerror=;;alert('XSS') />
看看他们的解决方案,我想知道为什么在实际警报之前需要两个(而不是一个)分号?
最佳答案
事实上,分号不是必需的,我只是在 FF5 和最新的 Chrome 上测试了没有分号的相同标签,它们都用这个发送警报
<img src=x onerror=;;alert('XSS') />
<img src=x onerror=alert('XSS') />
<img src="x" onerror="alert('XSS')" />
我认为他们试图在第一个分号中停止 onerror 事件,然后在警报中从事件中输出伪造代码
我试过了
<img src=x onerror=alert('eventfire');;alert('XSS') />
并且它将两个警报包含在事件中,因此它不会在事件范围之外运行第二个警报。
回答?似乎在没有分号的情况下做同样的事情(可能是旧浏览器解析 html 不佳并在事件范围之外执行警报???)
关于javascript - XSS 通过 img 标签,多余的分号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6457014/