2014-09-26 41 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請求之前在服務器端進行轉義。

相關問題