Nie mam konkretnej odpowiedzi na twoje pytanie, ale chciałbym podkreślić, że podejście oparte na białej liście i czarnej liście nie jest tylko "miłe". To ważne. Bardzo ważne. Jeśli chodzi o bezpieczeństwo, każda drobnostka jest ważna. Pamiętaj, że w przypadku skryptów cross-site i cross-site request forgery, nawet jeśli twoja strona nie wyświetla poufnych danych, haker może zainfekować twoją stronę przez wstrzyknięcie javascript i użycie go do uzyskania poufnych danych z innej strony. Więc robienie tego dobrze jest krytyczne.
OWASP guidelines specify using a white list approach. Wytyczne PCI Compliance określają to również w standardach kodowania (ponieważ odnoszą się do wytycznych OWASP).
Również nowsza wersja biblioteki AntiXss ma nową ładną funkcję: .GetSafeHtmlFragment(), która jest dobra w przypadkach, w których chcesz przechowywać HTML w bazie danych i wyświetlać go użytkownikowi jako HTML.
Ponadto, jeśli chodzi o "błąd", jeśli kodujesz prawidłowo i postępujesz zgodnie ze wszystkimi wytycznymi bezpieczeństwa, używasz sparametryzowanych procedur przechowywanych, więc pojedyncze cytaty będą traktowane poprawnie, Jeśli nie kodujesz prawidłowo , żadna biblioteka na półce nie będzie cię w pełni chronić. Biblioteka AntiXss ma być narzędziem do wykorzystania, a nie substytutem wiedzy. Opierając się na bibliotece, robiąc to dla ciebie, spodziewałbyś się naprawdę dobrego pędzla, który mógłby wypróbować dobre obrazy bez dobrego artysty.
Edycja - Dodano
Jak zapytałem w pytaniu przykład gdzie anty XSS będzie cię chronić i HttpUtility nie będzie:
HttpUtility.HtmlEncode and Server. HtmlEncode do not prevent Cross Site Scripting
To jest według autora, choć . Nie testowałem tego osobiście.
To brzmi jakbyś się na swoich wytycznych bezpieczeństwa, więc nie może to być coś, co muszę ci powiedzieć, ale tylko w przypadku mniej doświadczonych deweloper tam czytanie tego, powód powiedzieć, że podejście oparte na białej liście ma kluczowe znaczenie.
Teraz, dzisiaj HttpUtility.HtmlEncode może skutecznie zablokować każdy atak tam, po prostu usuwając/kodowanie <
i >
, plus kilka innych „znanych potencjalnie niebezpiecznych” znaków, ale ktoś zawsze stara się wymyślić nowe sposoby włamania. Zezwalanie na zawartość tylko znanej bezpiecznej (białej listy) jest o wiele łatwiejsze niż próba pomyślenia o każdym potencjalnie niebezpiecznym fragmencie danych wejściowych, które atakujący może rzucić na ciebie (metoda z czarną listą).
Przepraszamy. Uderzyłeś mnie w ból głowy. Prawdopodobnie jesteś bardzo zdolny i bardzo dobry w bezpiecznym kodowaniu.Mam tendencję do bycia trochę hardcorowym w moim podejściu do bezpieczeństwa po odziedziczeniu bardzo niebezpiecznej strony internetowej, która pilnie potrzebuje ulepszeń. – David
Wspaniale, że masz swój wkład David. Mam na myśli bezpieczeństwo, ale nigdy nie myślałem o implementacji HtmlEncode. Chcę naprawdę zrozumieć wpływ, jaki mogą mieć różne implementacje. –
Wystarczająco fair. Znalazłem przykład, o który prosiłeś i zawarłeś w mojej odpowiedzi powyżej. – David