2017-11-05 95 views
8

Wiele edytorów takich jak Średni oferuje teraz formatowanie. Z tego, co widzę w DOM, po prostu dodaje HTML. Ale w jaki sposób można dezynfekować ten rodzaj danych wejściowych bez utraty formatowania zastosowanego przez użytkownika?Jak radzić sobie z odkażaniem w edytorach JavaScript, które umożliwiają formatowanie?

E.g. klikając bold dodaje:

<strong class="markup--strong markup--p-strong">text</strong>

ale nie chcesz, aby uczynić jeśli użytkownik wprowadzi że sami. Więc jak to jest inne? Czy byłoby inaczej, gdybyś stylizował się na przecenę, ale również nie pozwolił użytkownikom na wprowadzanie własnych obniżek, ale tylko dzięki przeglądarce?

Jednym ze sposobów, w jaki mogłem wymyślić, jest uniknięcie każdej specjalnej postaci HTML, ale wydaje się to dziwne. O ile wiem, odkaża się zawartość tylko wtedy, gdy ją wypakowuję

+0

Musisz znaleźć źródło - a konkretnie Twoje odniesienie do mediów? użyj narzędzi dla deweloperów, aby znaleźć miejsce w JS, które jest wypluwane, a następnie odrzuć je –

Odpowiedz

3

Należy używać odkażacza po stronie serwera, jak twierdzi Vipin, ponieważ walidacja po stronie klienta jest podatna na manipulację. OWASP (Open Web Application Security Project) ma kilka przewodników i odkażaczy, których możesz używać tak jak java-html-sanitizer.

Aby zapoznać się z ogólną instrukcją, przeczytaj ten artykuł: https://www.owasp.org/index.php/Data_Validation w sekcji Sanitize.

1

Można zastąpić biało-wymienione elementy z innego charakteru, na przykład:

<strong.*> becomes |strong| 

Następnie należy usunąć wszystkie pozostałe HTML. Bądź świadomy funkcji onmouseover = "alert (1)", więc zachowaj to naprawdę proste.

Należy również zachować ostrożność podczas renderowania danych wprowadzanych przez użytkownika. Nie dodawaj go tylko jako kodu. Zamiast tego parsuj go i twórz elementy używając JavaScript. Nigdy nie używaj innerHTML, ale używaj .innerText i document.createElement().