2015-05-07 41 views
0

HTML:刪除html注入?

<textarea id="insTxt"></textarea> 
<h1 id="getTxt">...</h1> 
<button id="getBtn" onclick="getText()">Click Me</button> 

JS:

function getText() { 
    document.getElementById('getTxt').innerHTML = document.getElementById('insTxt').value; 
} 

在上面的代碼中,我可以在文本區域中輸入的HTML代碼和他們將在實際代碼使用。例如,如果我在textarea中輸入<button>BLAHBLAH</button>並單擊「Click Me」按鈕,它會添加「BLAHBLAH」按鈕。
這將如何防止?

+7

'innerHTML'將字符串解析爲HTML,'textContent'(你可能想要的)不是。 – Frxstrem

+0

這被稱爲XSS(跨站點腳本)。看看這個鏈接的解決方案。 https://www.owasp.org/index.php/Top_10_2013-A3-Cross-Site_Scripting_(XSS) –

+0

請務必記住,所有這些都發生在**客戶端**上。客戶可以隨時輕鬆更改JS和HTML。但是,如果您計劃將這些數據發送到服務器,那麼數據應該被正確地清理。 – nico

回答

1

您正在尋找innerText屬性。

function getText() { 
    document.getElementById('getTxt').innerText = document.getElementById('insTxt').value; 
} 
+3

內部文本不支持Firefox。 (document.getElementById('getTxt')。innerText ....} else {document.getElementById(「insTxt」)。textContent ....} https://developer.mozilla .org/zh-CN/docs/Web/API/Node/textContent –

+0

Crickey!自從我使用原始JavaScript DOM開發已經很長時間了,我不知道!萬歲... ...網絡標準? –