2011-10-10 10 views
5

E 'sicuro al 100% per effettuare le seguenti operazioni ?:E 'sicuro al 100% fare quanto segue?

var untrusted_input_from_3rd_party = '<script>alert("xss")<\/script>'; 
document.getElementsByTagName('body')[0].appendChild(document.createTextNode(untrusted_input_from_3rd_party)); 

Considerando che la terza parte può ingresso nulla (HTML, CSS, ecc), posso essere sicuro che non farà alcun danno se io passarlo attraverso createTextNode e quindi aggiungerlo alla dom?

+1

è * qualsiasi * mai "sicuro al 100%"? – Spudley

+0

Forse il 99,9% allora? :) – Polar

+0

Possibile dupe: http://stackoverflow.com/questions/476821/is-a-dom-text-node-guaranteed-to-not-be-interpreted-as-html –

risposta

5

Questo è un ottimo modo per prevenire XSS. La manipolazione del DOM tramite createTextNode è ampiamente utilizzata per incorporare in modo sicuro il testo di terze parti.

Detto questo, ci sono problemi oltre XSS. Non fa nulla per fermare i tentativi di ingegneria sociale se l'ingresso non attendibile è qualcosa di simile:

ALERT: Abbiamo rilevato malware sul computer. Copia e incolla http://evil.org/ nella barra degli indirizzi del browser per risolvere il problema.

Il modo migliore per prevenire l'ingegneria sociale (oltre a non includere contenuti di terze parti) è chiarire che il contenuto proviene da una terza parte.

1

Testato ora. Sembra essere corretto Se qualcosa va storto, dovrebbe essere un bug del browser, non il tuo.
Come al solito il server dovrebbe fare una vista html corretta di tutti gli input dell'utente e restituirla all'utente.

Ma per ridurre il carico del server (e se è accettabile) è possibile utilizzarlo di sicuro.

Problemi correlati