Wiem, że wiele pytań na temat sanitizerów HTML pojawiło się w SO, ale nie wiem, czy robią to, co chcę, mam trochę bałagan, ponieważ niektóre z zalecanych podejść mają więcej niż 4 lata.Sanitizer HTML w ASP.NET MVC, który filtruje niebezpieczne znaczniki, ale pozwala na resztę
Mam stronę z edytorem TinyMCE. Oczywiście ten edytor wysyła kod HTML do serwera i oczekuje HTML, więc utworzyłem obiekt z właściwością String
ozdobioną atrybutem [AllowHtml]
. To dobrze działa.
Teraz chcę się upewnić, że nikt nie próbuje wysłać znacznika <script>
, ani <img onerror="">
, ani w jaki inny sposób wykonać JS, lub dodać CSS wskazujący zewnętrzne adresy URL.
Jakie jest obecnie najlepsze rozwiązanie?
WPL ma bibliotekę HtmlSanitizationLibrary, ale skąd mogę wiedzieć, które tagi są uważane za "bezpieczne"?
WPL nie wydała niczego od kwietnia ubiegłego roku, a była to wersja beta. Zastanawiałem się, czy ten projekt jest aktywny?
Pozdrawiam.
Jest nadal aktywny. Sanitizer jednak, cóż, obecnie marnieje. Gdy ludzie przenieśli się do XHTML, środek dezynfekujący nie nadawał się do pracy, a przepisanie nie znajduje się na stole. Ponieważ TinyMCE generuje poprawne oznaczenia XHTML, możesz użyć Linq2Xml do zapytania DOM i odkażenia do treści serc. To prawdopodobnie lepsze długoterminowe rozwiązanie (i, hmm, daje mi pomysł na blog lub dwa). – blowdart