Biała lista w formacie HTML (anti-xss / Cross Site Scripting)

Mam powszechną sytuację, w której mam dane wejściowe użytkownika, które używa podzbioru HTML (wejście z tinyMCE). Muszę mieć pewną ochronę po stronie serwera przed atakami XSS i szukam dobrze przetestowanego narzędzia, którego ludzie używają do tego. Po stronie PHP widzę wiele bibliotek takich jak HTMLPurifier, które wykonują zadanie, ale nie mogę znaleźć niczego w .NET.

Po prostu szukam biblioteki do filtrowania do białej listy tagów, atrybutów na tych tagach i robię właściwą rzecz z „trudnymi” atrybutami, takimi jak: href i img: src

Widziałem post Jeffa Atwooda whttp://refactormycode.com/codes/333-sanitize-html, ale nie wiem, jak to jest aktualne. Czy ma to jakikolwiek związek z tym, co aktualnie korzysta z witryny? W każdym razie nie jestem pewien, czy czuję się dobrze z tą strategią próbowania wyrecytować poprawne dane wejściowe.

Ten wpis na blogu przedstawia, co wydaje się być o wiele bardziej atrakcyjną strategią:

http://blog.bvsoftware.com/post/2009/01/08/How-to-filter-Html-Input-to-Prevent-Cross-Site-Scripting-but-Still-Allow-Design.aspx

Ta metoda polega na analizowaniu kodu HTML w DOM, sprawdzeniu poprawności, a następnie odbudowaniu z niego poprawnego kodu HTML. Jeśli parsowanie HTML może obsługiwać źle sformatowany HTML, to świetnie. Jeśli nie, nic wielkiego - mogę wymagać dobrze sformatowanego HTML, ponieważ użytkownicy powinni używać edytora tinyMCE. W każdym przypadku przepisuję to, co wiem, że jest bezpieczny, dobrze ukształtowany HTML.

Problem polega na tym, że jest to opis, bez łącza do żadnej biblioteki, która faktycznie wykonuje ten algorytm.

Czy taka biblioteka istnieje? Jeśli nie, jaki byłby dobry silnik analizujący HTML .NET? A jakie wyrażenia regularne powinny być użyte do wykonania dodatkowej walidacji a: href, img: src? Czy brakuje mi czegoś jeszcze ważnego?

Nie chcę tutaj ponownie wprowadzać koła buggy. Z pewnością są tam niektóre powszechnie używane biblioteki. Jakieś pomysły?

questionAnswers(6)

yourAnswerToTheQuestion