@hzmzp
Jest to jak najbardziej dobra i powszechna praktyka. Niestety problem lezy gdzie indziej. Na początek, kto to może załadować? Jeżeli to jest autoryzowana, pewna osoba to jest OK. Jeżeli jest to random z internetu to na 100% znajdzie się taki, który doda złośliwy kod. Dlatego markdown jest bezpieczniejszy (ale nie 100%). Odnośni walidacji, frontend to tylko kosmetyka, prawdziwa walidacji MUSI być pod stronie backendu.
ale co ty chcesz walidowac na tym backendzie?
Robiłem coś takiego, mówię tutaj o zapisie HTML`a do bazy (komentarze userów) nie widzę w tym nic złego, jeśli to się robi z głową.
Przede wszystkim na backendzie przed jakimkolwiek zapisem musisz zwalidować tego htmla czy nie zawiera przypadkiem jakiś niechcianych rzeczy typu znaczników script itd.
Można ustawić whiteliste dozwolonych znaczników html i jeśli pojawi się jakiś nie dozwolony to nie zapisywać tego, są chyba gotowe libki do tego.
@Spectra
Sprawdzanie czy nie zawiera niechcianych znaczników?
Zakładasz z góry że ten html string jest unsafe i że nie uda ci się go w pełni zwalidować i po prostu frontend renderuje go jako zwykły tekst, a nie HTML.
Nie jeden programista już robił swoją koślawą implementacje takich checkerów a'la if (html.ToLower().Contains("script"))
itd,. ale po prostu to nie ma sensu - ciężko zrobić 100% pokrycia, przeglądarki i sam HTML to jest moving target (ciągle się zmieniają), a w dodatku mogą również zawierać bugi np. w wersji XYZ Chromium jest możliwe zrobienie RCE za pomocą zwykłego <b>
Stosuj dojrzałe ORMy/libki do obsługi bazki i parametrized queries, a na froncie renderuj to jako zwykły tekst, a nie HTML i powinno być ok bez żadnych operacji na literkach.
@Riddle ma rację pisząc
To o czym mówisz, że "trzeba sanitować" to jest bug wynikając z niepoprawnego wyświetlania widoku (podatnego na xss) albo niepoprawnego budowania sqli (sql injection). Jeśli masz kod podatny na takie błędy, to faktycznie ktoś mógłby wprowadzić złowrogą daną i próbować zaatakować serwis. Ale odpowiedzią na to nie jest filtrować dane na wejściu, tylko oczywiście poprawić widok i budowanie sqli tak żeby nie były podatne na takie błędy.