天天看點

jq html實體轉換,如何使用jQuery解碼HTML實體?

沒有任何jQuery:

function decodeEntities(encodedString) {

var textArea = document.createElement('textarea');

textArea.innerHTML = encodedString;

return textArea.value;

}

console.log(decodeEntities('1 & 2')); // '1 & 2'

類似方法的安全問題

如邁克·塞缪爾,用一個

而不是不受信任的使用者輸入是XSS漏洞,即使 從未添加到DOM中:

function decodeEntities(encodedString) {

var div = document.createElement('div');

div.innerHTML = encodedString;

return div.textContent;

}

// Shows an alert

decodeEntities('

jq html實體轉換,如何使用jQuery解碼HTML實體?

')

但是,此攻擊不可能針對,因為不存在允許..是以,仍然存在于“編碼”字元串中的任何HTML标記都将自動由浏覽器進行實體編碼。

function decodeEntities(encodedString) {

var textArea = document.createElement('textarea');

textArea.innerHTML = encodedString;

return textArea.value;

}

// Safe, and returns the correct answer

console.log(decodeEntities('

jq html實體轉換,如何使用jQuery解碼HTML實體?

'))警告使用jQuery的.html()和.val()方法,而不是使用.innerHTML和.value也不安全*對于某些版本的jQuery,即使在使用textarea..這是因為jQuery的舊版本有意和顯式地評估腳本包含在傳遞給.html()..是以,這樣的代碼在jQuery 1.8中顯示了一個警報:

//

*多虧了額魯彭克曼因為發現了這個漏洞。