用里面的脚本设置innerHTML

tic*_*tic 6 javascript firebug innerhtml

如果我在任何页面上运行Firebug中的以下行:

document.documentElement.innerHTML="<script>alert(1)</script>";
Run Code Online (Sandbox Code Playgroud)

为什么不alert执行命令?

aps*_*ers 5

它看起来像你的<script>标签像您期望的添加,但没有被执行其中的代码.如果你尝试使用document.head(或任何其他DOM元素,似乎)会发生同样的失败.无论出于何种原因(可能符合标准,可能的安全性),<script>通过.innerHTML简单添加的块内部的内联代码都不会运行.

但是,我确实有生成类似功能的工作代码:

var script = document.createElement('script');
script[(script.innerText===undefined?"textContent":"innerText")] = 'alert(1);';
document.documentElement.appendChild(script);
Run Code Online (Sandbox Code Playgroud)

在这里,你添加<script>documentElement.appendChild和使用textContentinnerText设置的内容<script>.