2012-07-25 9 views
10

Tek sayfalık bir webapp üzerinde çalışıyorum. Doğrudan DOM düğümleri oluşturarak render yapıyorum. Özellikle, kullanıcı tarafından sağlanan tüm veriler, document.createTextNode("user data") ile metin düğümleri oluşturarak sayfaya eklenir.createTextNode, HTML enjeksiyonundan ve XSS'den tamamen güvenli midir?

Bu yaklaşım, HTML enjeksiyonu, siteler arası komut dosyası oluşturma (XSS) ve kullanıcıların yapabileceği diğer tüm kötü şeylerin olasılığını önler mi?

cevap

9

Düz metin düğümü oluşturur, bu yüzden evet, gidebildiği kadar.

Gerektiği her hangi bir kanaldan veri almak için güvensiz bir yöntem kullanarak bir XSS sorunu oluşturmak mümkün olsa da createTextNode.

örn.

document.createTextNode('<?php echo $_GET['xss']; ?>'); 

... ama tehlike PHP echo değil, JavaScript createTextNode şöyledir: Aşağıdaki güvensiz olurdu.

+0

PHP'ye aşina değilim. Bu örnek, kullanıcının başka bir yerden veri talep etmesine ve sayfaya metin olarak eklenmesine izin veriyor mu? –

+0

@breischl - PHP, URL'nin sorgu dizisinden (harici veri olan) girdi alır ve çıkış yapmadan çıkışa bırakır. – Quentin

+0

Ama içinde ne olursa olsun, hala düz metin olarak çıkacaktı, değil mi? Yani, bir metin göstermenin dışında tarayıcıyı bir şey yapamazdınız? –

İlgili konular