![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 375 Pomógł: 20 Dołączył: 28.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Istnieją 2 metody zabezpieczeń przed CSRF, które chronią tylko częściowo:
Skuteczniejsze metody:
Jakie jeszcze znacie skuteczne sposoby zabezpieczeń? Chcę zastosować takie zabezpieczenia, aby w jak najmniejszym stopniu utrudnić korzystanie z serwisu. Rozważmy jednorazowy klucz. Standardowa implementacja wygląda tak:
Osoba pisze jednocześnie 2 posty. Kiedy wyśle drugi, zobaczy komunikat "Wyślij formularz ponownie". Przyczyna: w sesji zapisujemy klucz pod identyczną nazwą. Innym razem pisze długi post. Znowu do samo. Przyczyna: Sesja wygasa po 20 minutach (można zwiększyć, tylko niezalecane). Rozważmy ponowne logowanie przy wejściu do panelu admina. Redaktor pisze długi artykuł. Zapisuje. Niestety, sesja wygasła. Musi zalogować się ponownie. Artykuł znika. Zamiast sesji można wykorzystać ciasteczka. Dopóki nie zamknie przeglądarki, nie zostanie wylogowany. Jak nie popełnić błędu? Wystarczy zapisać md5(hasło + coś tam)? Jak projektować zabezpieczenia, aby nie utrudniać życia użytkownikom? Ten post edytował WebCM 18.03.2012, 16:41:44 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 132 Pomógł: 4 Dołączył: 22.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
@marcio
Po pierwsze poprzez 'hash' rozumiem przepuszczony przez np. md5 nazwę usera/agenta/ip/etc - to tak dla jasności dyskusji. Poznać jest go bardzo łatwo, wystarczy po testować na samym sobie i wierz mi, że nawet nie zbyt uparty napastnik do tego dojdzie, bo nie jest to skomplikowany pomysł obrony. Dla jasności w tej kwestii bardzo łatwo poznać usera,browser,ip wystarczy umiejętnie wykorzystać XSS'a na danym portalu. (nie powinno się zakładać, że takiego nie będzie). To co mnie jeszcze irytuje, to że jak sam napisałeś hash jest jeden na zawsze przypisany do danego konta - jeśli pozna się mechanizm tworzenia hasha to cały portal leży otworem dla CSRF. Przy generowaniu klucza jednorazowo tego problemu nie ma, a nawet więcej... napastnik przy sqlinfect(który przecież też może wystąpić) nie jest wstanie poznać autkeya. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 02:14 |