2009-06-22 10 views
5

W Podcast 58 (około 20 minut), Jeff narzeka na problemy HTML.Encode() i Joel mówi o użyciu systemu typu mają zwykłe ciągi i HTMLStrings:Zapobieganie XSS exploity przy użyciu systemu typu jak Joel zasugerował

  • Krótkie polityczne tłamszenie o złym mechanizmie wyświetlania, które nie udaje się kodować domyślnie HTML . Problem z tym wyborem jest taki, że nie jest on domyślnie "bezpieczny domyślnie", co zawsze jest błędnym wyborem dla architektury lub interfejsu API. Zapomnij o kodowaniu trochę danych z wprowadzonych przez użytkownika w jednym miejscu, które śmierdzi w Twojej aplikacji sieciowej, a także będziesz całkowicie własnością XSS. Wierz w to. Wiem, bo przydarzyło się nam . Wiele razy!

  • Joel twierdzi, że z silnie wpisany języka i prawej ram, jest to możliwe (w teorii) aby całkowicie wyeliminować XSS - to wymagałoby za pomocą konkretnych danych rodzaj, typ, który jest jedynym droga do wysyła dane do przeglądarki. Ten typ danych o numerze byłby sprawdzany podczas kompilacji w czasie .

komentarze na wzmiankę blogu stosując analizę statyczną, aby znaleźć potencjalnych słabości. Model transcript Wiki jeszcze się nie zakończył.

Czy można wdrożyć sugestię Joela bez konieczności korzystania z nowej platformy ASP.NET?

Czy możliwe jest zaimplementowanie go po prostu przez podklasy każdej kontroli i wymuszenie nowych interfejsów w oparciu o HTMLString? Jeśli większość osób już kontroluje podklasę, aby lepiej wstrzykiwać funkcje specyficzne dla witryny, czy nie byłoby to łatwe do wdrożenia?

Czy warto to robić zamiast inwestować w analizę statyczną?

Odpowiedz

2

Aby korzystać z HtmlString wszędzie, zasadniczo trzeba przepisać każdą właściwość i metodę każdej kontroli internetowej. System.String jest zapieczętowany, więc nie możesz go podklasować.

Łatwiejsze (ale wciąż bardzo czasochłonne) podejście polegałoby na zastosowaniu adapterów kontrolnych w celu zastąpienia kontrolek sieciowych bezpiecznymi alternatywami. W takim przypadku można podklasować każdą kontrolę internetową i zastąpić metody renderowania dynamiczną treścią kodującą HTML.

+0

Zgaduję, że o to mi chodzi. W wielu aplikacjach ASP.NET, z których korzystałem, KAŻDE sterowanie było już podklasowane od czasu wdrożenia I18n i specjalnych rozszerzeń do sprawdzania poprawności i innych rzeczy. –

Powiązane problemy