我的讀取與阿賈克斯(JSON)分析數據然後進入這樣的一個模板:如何在將數據加載到div時防止XSS?
function noteTemplate(obj) {
var date = obj.created_at.split(/[- :]/),
dateTime = date[2] + '.' + date[1] + '.' + date[0];
dateTime += ' @ ' + date[3] + ':' + date[4] + ':' + date[5];
var note = '<div class="note-container" target="' + obj.id + '">';
note += '<div class="note-options"><div class="note-remove"></div></div>';
note += '<div class="note-name">' + obj.name + '</div>';
note += '<div class="note-date">' + dateTime + '</div>';
note += '<div class="note-content">' + obj.content + '</div>';
note += '</div>';
return note;
}
然後附加,爲了一個div使用jQuery。現在如果obj.name
或obj.content
包含任何JS,那些將被執行。
什麼是最合適的方法來防止這種情況?由於
更新:
我通過轉義<>與實體替換它們這樣做的工作找到了解決辦法,並在本機的方式。
obj.content.replace(/</g, "<").replace(/>/g, ">")
的jQuery:
var $note = $(note);
$note.find('.note-name').text(obj.name);
$note.find('.note-content').text(obj.content);
return $note;
的.text()sanitazes給你。
感謝@Rory McCrossan的想法!
我找到了解決辦法,althought不知道這是正確的,但逃脫< >做工作:obj.content.replace(/ g,「<」).replace(/>/g,「>」) –