Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ponowne uwierzytelnianie i obrona przed CSRF, aby użytkownicy tego nie odczuli
WebCM
post
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:
  1. Sprawdzanie nagłówka Referer - niektórzy w trosce o prywatność go wyłączają
  2. Wysyłanie akcji metodą POST - wtedy nie zadziała metoda "na obrazek"

Skuteczniejsze metody:
  1. Jednorazowy klucz w ukrytym polu formularza - musi się zgadzać z zapisanym na serwerze
  2. Potwierdzanie hasła - np. przy wejściu do panelu admina, ważnych zmianach
  3. Kody jednorazowe, SMS, telefon - to już krytyczny poziom zabezpieczeń

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:
  1. if( wyslano_formularz )
  2. {
  3. if( empty($_SESSION['authKey']) OR $_POST['authKey'] != $_SESSION['authKey'] )
  4. {
  5. echo 'Wyślij formularz ponownie';
  6. }
  7. }
  8.  
  9. $_SESSION['authKey'] = uniqid();

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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


@marcio: Każdy algorytm hashujący podatny jest na atak przy użyciu tablic teńczowych, a stosowanie soli jako takiej jest podstawą znaną od początków korzystania z funkcji hashujących, więc może darujemy sobie takie banały.

Cytat
A no da się. Nie podam przykładu bo jest to zależne od konstrukcji danego portalu. W taki sposób powstają wredne robaki, które wysyłają za nas spreparowane wiadomości... NK jest podatna, więc jeśli jesteś ciekawy to możesz potrenować.
Byłbym jednak bardzo wdzięczny za podanie przykładu, bo wg tego co piszesz każdy portal byłby wstanie włamać się na różne moje konta (pocztę, bank, fora itd.) o ile mają odpowiednio złą (tj. jaką?) konstrukcję.
Cytat
Odnośnie MD5, to nie doszli by do tego, gdyby właśnie nie było to tak popularne i moim zdaniem popularność ma bardzo wiele do rzeczy - chociażby dlatego, że lepiej spędzić miesiąc nad przełamaniem schematu czegoś, co jest częściej stosowane niż spędzić miesiąc co jest stosowane sporadycznie na portalach z minimalną statystyką.
To czym się kierowali ludzie nie jest teraz istotne, istotne jest to że opracowali algorytm łamiący podstawową właściowość MD5 - jednokierunkowość. Z SHA1 jest zresztą dosyć podobnie.
Go to the top of the page
+Quote Post

Posty w temacie
- WebCM   Ponowne uwierzytelnianie i obrona przed CSRF   18.03.2012, 16:40:08
- - marcio   Poprostu przed CSRF stosuj token i ewentualnie ses...   19.03.2012, 18:39:26
- - fr33d0m   @marcio To rozwiązanie z hashem jest raczej średni...   19.03.2012, 23:45:53
- - marcio   CytatTo rozwiązanie z hashem jest raczej średnie -...   20.03.2012, 00:52:19
- - fr33d0m   @marcio Po pierwsze poprzez 'hash' rozumie...   20.03.2012, 16:03:05
- - marcio   CytatPo pierwsze poprzez 'hash' rozumiem p...   20.03.2012, 17:28:12
- - fr33d0m   Dla mnie hash to hash (czysty bez dodatków, który ...   20.03.2012, 19:17:41
- - marcio   CytatDla mnie hash to hash (czysty bez dodatków, k...   20.03.2012, 19:42:44
- - fr33d0m   Ja zawsze testuje swój kod na przeróżne zagrożenia...   20.03.2012, 20:13:38
- - em1X   Nie trzeba niczego do bazy dodawać. Przy każdym ot...   23.03.2012, 12:50:05
- - Crozin   CytatOsoba pisze jednocześnie 2 posty. Kiedy wyśle...   23.03.2012, 13:14:02
- - fr33d0m   @Crozin Szczerze to nie zbyt kumam cały sens Twoje...   23.03.2012, 21:06:08
- - Crozin   @fr33d0m: Nie, nie będzie mógł wysłać czegoś w imi...   23.03.2012, 21:46:19
- - WebCM   CytatPrzed takim czymś (i innymi problemami - np. ...   23.03.2012, 23:46:47
- - marcio   CytatPowstał temat bezpiecznego logowania. Załóżmy...   24.03.2012, 11:10:46
- - fr33d0m   Cytat(Crozin @ 23.03.2012, 21:46:19 )...   25.03.2012, 00:33:16
- - Crozin   @fr33d0m: Niby w jaki sposób zewnętrzny serwer mia...   25.03.2012, 01:13:49
- - marcio   CytatA słabość MD5 polega na tym, że udało się opr...   25.03.2012, 01:17:45
- - fr33d0m   Cytat@fr33d0m: Niby w jaki sposób zewnętrzny serwe...   25.03.2012, 01:36:57
- - Crozin   @marcio: Każdy algorytm hashujący podatny jest na ...   25.03.2012, 13:04:04
- - fr33d0m   CytatA słabość MD5 polega na tym, że udało się opr...   25.03.2012, 13:47:03
- - Crozin   Cytat[PHP] pobierz, plaintext Serwer podantny na C...   25.03.2012, 14:13:37


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 07:44