2013-05-28 3 views
0

data, возвращенный с сервера, восприимчив к XSS. Нужно ли мне дезинфицировать данные на сервере, прежде чем отправлять их клиенту, используя что-то вроде htmlspecialchar(), или $.get() перемещаться по XSS? СпасибоЗащита от XSS при отображении с использованием Ajax

$.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

Спасибо, Бенджамин. Чтобы убедиться, что я понимаю, я должен использовать 'htmlspecialchars()' на '.html()', но не нужно на двух других. – user1032531

+0

Вы не использовали бы '.html', чтобы начать с содержимого, которому вы полностью не доверяете. Я настоятельно рекомендую вам хранить _templates_ на стороне клиента и передавать _data_ с сервера, а затем использовать что-то вроде Mustache для визуализации этих шаблонов (Mustache избегает HTML-символов по умолчанию) –

Смежные вопросы