如何创建仅使用JavaScript将html插入网页的文本框

时间:2017-08-25 18:25:24

标签: javascript html debugging button input

我正在为我的一个朋友创建一个易受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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

而不是

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

尝试

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