【问题标题】:How Can I Create A Textbox that inserts html into The Webpage Using Only JavaScript如何创建一个仅使用 JavaScript 将 html 插入网页的文本框
【发布时间】:2017-08-25 18:25:24
【问题描述】:

我正在为我的一位朋友创建一个 XSS 易受攻击的网站,以便他可以搞乱它。但是,过去几天我一直在尝试创建一个,但没有成功。我现在只是为了简化它:

<input type="text" id="YourText">
<button onclick="myFunction()">Button</button>

JavaScript:

function myFunction() {
    var btn = document.createElement("button");
    btn.appendChild(document.createTextNode(document.getElementById("YourText").value);
    document.body.appendChild(btn);
}

所以它应该做的是,如果您按下名为 button 的按钮,它会创建一个按钮,其中包含您在具有您创建的 id 的文本框中键入的文本。但是,当我运行它时,什么也没有发生。我不明白为什么。我使用了段落标签甚至脚本标签,但没有任何效果。但是,如果我这样做,它只会创建元素但不会接受用户的输入,如下所示:

function myFunction() {
    var btn = document.createElement("button");
    btn.appendChild(document.createTextNode("Hi"));
    document.body.appendChild(btn);
}

它工作得很好。我试过删除 .value 但它仍然不起作用。我只是不明白我做错了什么,请帮忙。

它的源代码在这里:https://github.com/ninja25538/SuperCoolImageSiteThat-sNotAtAllVulnerable/blob/master/index.html

【问题讨论】:

  • 我想只使用 JavaScript 但如果没有 JavaScript 选项,我将使用 Jquery
  • 您有一个错字:括号在您的代码 sn-ps 中不平衡。如果您监控控制台,您会注意到的。
  • 我的电脑没有控制台,因为它被阻止了=(
  • 你改错了吗?
  • 您是否在文本输入中输入过任何内容? Working here.

标签: javascript html debugging button input


【解决方案1】:

试试

<script>
function myFunction() {
var val = document.getElementById("YourText").value;
var x = "<input type=submit value="+val+"></input>";
document.getElementById("someDiv").innerHTML += x;
}
</script>

【讨论】:

    【解决方案2】:

    代替

    btn.appendChild(document.createTextNode(document.getElementById("YourText").value);
    

    试试

    btn.appendChild(document.createTextNode(document.getElementById("YourText").innerHTML);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-02
      • 2013-05-15
      • 2021-12-17
      相关资源
      最近更新 更多