2013-05-28 97 views
0

data從服務器返回容易受到XSS的影響。在使用類似htmlspecialchar()的方式發送給客戶端之前,我是否需要在服務器上清理數據?還是使用類似於012的服務器?謝謝使用Ajax顯示時防止XSS

$.get('getData.php', 
function (data){ 
    $('#div1').text(data.div1); 
    $('#div2').html(data.div2); 
    $('#textarea').val(data.textarea); 
},'json'); 

回答

0
$('#div1').text(data.div1); 

,因爲你改變的元素的文本這不是suceptible XSS攻擊。這照顧你使用htmlspecialchars

$('#div2').html(data.div2); 

這一點,因爲你改變了HTML,而不是文字,所以如果你不知道你的反應有人可以把一個<script>標籤那裏,你的網頁上運行任意代碼。

$('#textarea').val(data.textarea); 

也可以,因爲它改變了文本區域的內容。

+0

謝謝你本傑明。爲了確保我理解,我應該在'.html()'上使用'htmlspecialchars()',但不需要在另外兩個上使用。 – user1032531

+0

您不會使用'.html'開頭,因爲您不完全信任的內容。我強烈建議你在客戶端存儲_templates_,並從服務器傳遞_data_,然後使用Mustache之類的東西來渲染這些模板(默認情況下Mustache會轉義HTML字符) –