执行复制到pre标记中的Javascript代码示例

执行复制到pre标记中的Javascript代码示例,javascript,jquery,Javascript,Jquery,我正在尝试向某个添加一段javascript代码。 我将代码包含在pre和code标记中,但是当我实际运行它时,代码就会被执行。显然,那根本不是我想要的 var code = '<pre><code><script type="text/javascript" src="http://source.com/test.js"><\/script>\n'; code = code + '<script type="text/jav

我正在尝试向某个
添加一段javascript代码。 我将代码包含在pre和code标记中,但是当我实际运行它时,代码就会被执行。显然,那根本不是我想要的

    var code = '<pre><code><script type="text/javascript" src="http://source.com/test.js"><\/script>\n';
    code = code + '<script type="text/javascript">\n';
    code = code + '\tadimp.id = ' + 1 + ';\n';
    code = code + '\tadimp.type = ' + 1 + ';\n';
    code = code + '\tadimp.generate();\n';
    code = code + '<\/script></code></pre>';

    $("#code").html(code);
var code='
\n';
var code = '<pre><code>&lt;script type="text/javascript" src="http://source.com/test.js"&gt;&lt;\/script&gt;\n';
    code = code + '&lt;script type="text/javascript"&gt;\n';
    code = code + '\tadimp.id = ' + 1 + ';\n';
    code = code + '\tadimp.type = ' + 1 + ';\n';
    code = code + '\tadimp.generate();\n';
    code = code + '&lt;\/script&gt;</code></pre>';

 $("#code").html(code);
代码=代码+'\n'; code=code+'\tadimp.id='+1+'\n′; code=code+'\tadimp.type='+1+'\n′; code=code+'\tadimp.generate()\n′; 代码=代码+'
'; $(“#代码”).html(代码);
在这种情况下,您应该为使用
。试试这个

var code = [
        '<script type="text/javascript" src="http://source.com/test.js"><\/script>',
        '<script type="text/javascript">',
        '\tadimp.id = ' + 1 + ';',
        '\tadimp.type = ' + 1 + ';',
        '\tadimp.generate();',
        '<\/script>'
    ].join('\n');

$('#code').text(code);
// --------^^^^
'; $(“#代码”).html(代码); 由于HTML标记在PRE中是允许的,所以您不能通过在文本文件周围拍打
将文本文件“插入”到HTML文档中。必须首先将&、<和>字符转换为实体


惊喜!您刚刚制造了自己的XSS漏洞。始终使用HTML将任何数据编码为HTML。(“数据”是您希望显示在屏幕上的任何内容。)

谢天谢地,在HTMLDOM中,这是完全自动的。只需使用text属性,而不是HTML属性

var代码=[
'',
'',
'\tadimp.id='+1+';',
'\tadimp.type='+1+';',
“\tadimp.generate();”,
''
].join('\n');
$('代码')。文本(代码);
// --------^^^^

实时演示:

预标记格式化文本不一定会将其中的文本作为html执行。或者在本例中是JavaScript。更好的方法是用html实体
替换,而不是使用符号<和>


var code='<script type=“text/javascript”src=”http://source.com/test.js“></script>\n'

我建议您只需简单地替换中的
<,您还需要转换开头的
标记,所以它不会假定其余部分是脚本的一部分。您的手指比我的手指快。”@skerit-希望它能帮到你。不知怎的,我认为标签中的任何东西都被视为文本。。。这帮了大忙!:)
var code = '<pre><code>&lt;script type="text/javascript" src="http://source.com/test.js"&gt;&lt;\/script&gt;\n';
    code = code + '&lt;script type="text/javascript"&gt;\n';
    code = code + '\tadimp.id = ' + 1 + ';\n';
    code = code + '\tadimp.type = ' + 1 + ';\n';
    code = code + '\tadimp.generate();\n';
    code = code + '&lt;\/script&gt;</code></pre>';

 $("#code").html(code);