Szukam prostego sanitizer HTML napisanego w JavaScript. Nie musi być w 100% bezpieczny dla XSS.Prosty dezynfektor HTML w JavaScript
Na mojej stronie internetowej wdrażam Markdown i edytor Markdown WMD (gałąź master master od github). Problem polega na tym, że HTML wyświetlany w podglądzie na żywo nie jest filtrowany, tak jak tu na SO. Szukam prostego/szybkiego sanitizer HTML napisanego w JavaScript, dzięki czemu mogę filtrować zawartość okna podglądu.
Nie trzeba pełnego analizatora składni z pełną ochroną XSS. Nie wysyłam danych wyjściowych z powrotem na serwer. Wysyłam Markdown na serwer, na którym używam odpowiedniego, pełnego dezynfekcji HTML, zanim zapiszę wynik w bazie danych.
Google jest absolutnie bezużyteczny dla mnie. Dostaję setki (często niepoprawnych) artykułów o tym, jak odfiltrować javascript z HTML generowanego przez użytkownika we wszystkich językach po stronie serwera.
UPDATE
wytłumaczę nieco lepiej, dlaczego muszę to. Moja strona internetowa ma edytora bardzo podobnego do edytora StackOverflow. W polu tekstowym znajduje się składnia MarkDown, a pod nią okno podglądu, które pokazuje, jak będzie wyglądać po jej przesłaniu.
Gdy użytkownik coś przesyła, jest wysyłany na serwer w formacie MarkDown. Serwer konwertuje go na HTML, a następnie uruchamia na nim sanitizer HTML, aby oczyścić kod HTML. MarkDown zezwala na dowolny kod HTML, więc muszę go wyczyścić. Na przykład użytkownik pisze coś takiego:
<script>alert('Boo!');</script>
Konwerter MarkDown nie dotyka go, ponieważ jest to HTML. Sanitizer HTML usunie go, więc element skryptu zniknął.
Ale tak nie jest, co dzieje się w oknie podglądu. Okno podglądu konwertuje MarkDown tylko na HTML, ale nie powoduje dezynfekcji. Tak więc okno podglądu będzie miało element skryptu. Oznacza to, że okno podglądu różni się od rzeczywistego renderowania na serwerze.
Chcę to naprawić, więc potrzebuję szybkiego i brudnego sanitizer HTML JavaScript. Coś prostego z podstawową czarną listą elementów i atrybutów. Nie musi to być XSS, ponieważ ochrona XSS jest wykonywana przez sanitizer HTML po stronie serwera.
Ma to na celu upewnienie się, że okno podglądu będzie odpowiadać rzeczywistemu renderowaniu przez 99,99% czasu, co jest dla mnie wystarczająco dobre.
Czy możesz pomóc? Z góry dziękuję!
FWIW, Nienawidzę, gdy podgląd nie pasuje do tego, co zostało opublikowane. – Ms2ger
@ ms2ger: Dlatego potrzebuję sanitizer HTML, aby podgląd był zgodny z tym, co robi serwer na zapleczu. –
Czy to nie problem polegać na tym, że atakujący mogliby przetestować swoje ataki w przeglądarce, podczas gdy nie widzisz żadnej z nich? – siukurnin