2012-07-25 11 views
10

Pracuję nad pojedynczą stroną webapp. Robię renderowanie bezpośrednio poprzez tworzenie węzłów DOM. W szczególności wszystkie dane dostarczone przez użytkownika są dodawane do strony, tworząc węzły tekstowe z document.createTextNode("user data").Czy createTextNode jest całkowicie bezpieczny przed iniekcją HTML i XSS?

Czy to podejście pozwala uniknąć jakiejkolwiek możliwości wstrzyknięcia kodu HTML, skryptów krzyżowych (XSS) i wszystkich innych złych rzeczy, które mogą zrobić użytkownicy?

Odpowiedz

9

Tworzy węzeł zwykłego tekstu, więc tak, na ile to możliwe.

Możliwe jest utworzenie problemu XSS przy użyciu niebezpiecznej metody, aby uzyskać dane z dowolnego kanału, który jest wprowadzany do createTextNode.

np. Poniższa byłoby niebezpieczne:

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

... ale niebezpieczeństwo jest z PHP echo, a nie JavaScript createTextNode.

+0

Nie znam PHP. Czy to jest przykład pozwalający użytkownikowi na żądanie danych z innych stron i czy jest on wstawiony jako tekst na stronie? –

+0

@breischl - PHP pobiera dane wejściowe z ciągu zapytania adresu URL (który jest danymi zewnętrznymi) i upuszcza je na wyjście bez ucieczki. – Quentin

+0

Ale nadal byłby wyprowadzany jako zwykły tekst, bez względu na to, co w nim było, prawda? Czyli nie można spowodować, że przeglądarka zrobi cokolwiek, oprócz wyświetlania jakiegoś tekstu? –

Powiązane problemy