Dla profili moich użytkowników pozwolę im wstawić kod HTML, który zostanie wyświetlony na ich profilu.

Czy są jakieś specjalne tagi, które muszę ręcznie usunąć, gdy zapisują swój profil?

Oprócz znacznika <script>, co jeszcze może być niebezpieczne?

Co jeszcze może być "niebezpieczne"?

1
user847495 14 grudzień 2011, 16:29

5 odpowiedzi

Najlepsza odpowiedź

Należy unikać apletu, osadzony, obiekt, skrypt i iframe.

A i IMG mogą być problematyczne, ponieważ zezwalają na połączenie z zasobami poza miejscem. Mogą również zawierać JavaScript: URL

Unikaj pozwalania użytkownikom wejść do żadnych znaczników głowy do treści oznaczały dla organizmu. styl, link, meta, tytuł itp

Musisz także uważać na atrybuty. Nie zezwalaj na żaden atrybut, na którym się zaczyna, ponieważ są to wiązania zdarzeń JavaScript. Chcesz również sprawdzić wszystkie atrybuty URL dla JavaScript: i Data: URLS.

Edytowany, aby dodać :

Formy i ich dzieci są również prawdopodobnie czymś, na co można uniknąć, ponieważ mogą być używane do dupe użytkowników do wprowadzania informacji, które zostają zbierane przez niektóre inne witryny.

Polecam użycie polityki białej, zamiast na czarnej liście, jeśli chodzi o znaczniki i atrybuty, ponieważ znacznie łatwiej jest przegapić coś z czarną listą. Również z HTML5 Gaining Traction jest cały gospodarz nowych tagów i atrybutów, do których uważają.

3
GordonM 14 grudzień 2011, 12:46

Prawie wszystko. Nie wiesz, że ludzie nie robią:

<img onload="hax" />

Ponadto, musisz zatwierdzić stronę serwera IT, a nie tylko po stronie klienta

2
paulslater19 14 grudzień 2011, 12:38

Zasadniczo Usuń każdy znacznik i atrybut z wyjątkiem nieszkodliwe , które chcesz zezwolić, p, strong, strong X2}} em, ul, ol, li, div, div, span, {{x10}} }, u, {{x12}}

Jeśli pozwolisz img znacznik, upewnij się, że nie należy usunąć alt, src i title atrybutu.

Jeśli zezwolisz na znacznik a, upewnij się, że nie należy usunąć atrybutu href.

Rozważmy to, lista możliwych znaczników i atrybutów będzie prawie niekończąca się w kodzie sprawdzania.

2
I.G. Pascual 14 grudzień 2011, 14:04

Zakładając, że nie używasz PHP ani innych przetwarzania po stronie serwera, jedynymi innymi elementami, o które martwię się o iframe, object, and applet

Jeśli używasz języka po stronie serwera, po prostu upewnij się, że również odkażaj dowolne wejście użytkownika.

Możesz także zapoznać się z atakami XSS, po prostu uważać na wszelkie złośliwe bzdury: http: // ha ha .ckers.org / xss.html

1
Chris Fletcher 14 grudzień 2011, 12:35

http://html5sec.org/ to dobra lista tego, co można użyć do wykonania JavaScript.

Najlepszym podejściem jest użycie WhiteList: usuń wszystko, z wyjątkiem tego, co jest zdecydowanie bezpieczne, jak kilka podstawowych elementów stylizacji; Nie zezwalaj na żadne atrybuty, jeśli to możliwe.

1
duri 14 grudzień 2011, 12:42