2014-09-26 69 views
0

如果返回结果值为<script>alert('test');</script>,是否可以在我的div标记中正确打印<script>alert('test');</script>值?转义JQuery AJAX结果并保留原始值

$.ajax({ 
        url:'${pageContext.request.contextPath}/node/get/2.do', 
        method:'GET', 
        data:{name:nodeName, parentId: parentId}, 
        dataType:'json', 
        success:function (result, textStatus, xhr){ 
         $('#div1').html(result); 
        } 
        error: function(xhr, textStatus, errorThrown){ 
         $('#div1').html('error');     } 
       })) 

UPDATE:

对不起,这是一个坏榜样,以较早使用创建的URL。改为将它改为GET。直接使用.html()的主要问题是处理用户输入的不可信数据。如果VAR结果返回以下值:而预期值为

<center>Node 1</center> 

回答

0

而不是

$('#div1').html(result); 

尝试

$('#div1').text(result); 

注意

<center> 
    <script> 
    setInterval(function(){ 
     alert("you have xss!"); 
    }, 2000); 
    </script> 
</center> 

: -

使用.text(…)当您打算显示为一个简单的文本的值(在你的情况)。

当您打算将值显示为html格式的文本(或HTML内容)时,请使用.html(…)

了解更多关于.text().html()的地方。

+0

嘿谢谢!如果我的结果返回html和一个值,该怎么办?如

hello
? – CodeBender 2014-09-26 10:22:40

+0

如果你希望你的值应该被解释为html,那么使用'.html()',并且当你想要将html标签作为文本打印出来,就像在这个场景中一样,然后使用'.text()'作为我的答案。 CodeBender – 2014-09-26 10:25:23

+0

关注的是,如何使用.html() – CodeBender 2014-09-26 10:29:44

0

我找到了我的问题的答案。

以前,当我转义“结果”变量中返回的值时,不仅符号被转义,而且空间也被转义。再次通过OWASP网站后,我发现ESAPI 库在返回到AJAX请求之前在服务器端进行转义。

相关问题