Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wasze metody autoryzacji..., Jak zapewnic bezpieczną autoryzacje użytkownika
joebezucha
post 23.05.2007, 08:48:09
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 1
Dołączył: 23.05.2007
Skąd: Gliwice

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


Czesc,

Interesuje mnie jakie metody autoryzacji uzytkownika stosujecie w swoich programach. Bezpieczna metoda powinna uniemożliwiac ataki brute force (i inteligentniejsze jego odmiany wykorzystujące fakt prawdopodobiensto wystapienia wybranych znakow w zaleznosci od języka itp) i słownikowy. Powinna tez przechowywac haslo w postaci niejawnej w bazie danych.

Wybrane metody:
1)hasło zapisane w bazie danych zostaje wczesniej uzupełnione o prefix i zakodowane algorytmem haszującym (np. SHA256 lub SHA512). Prefix znacznie utrudni atak słownikowy. Zabezpieczeniem przed brute force może być blokada możliwości autoryzacji na X minut po Y nieudanych próbach na poprawny login (globalnie lub tylko z „atakującego IP”).
Zalety:
- Przyjazne dla użytkownika – posługuje się tylko jednym hasłem.

2)hasło może być zaszyfrowane algorytmem wymagającym sekretnego klucza (np. algorytm Rijndael 128bit), który użytkownik musi podać ręcznie lub z pliku wraz ze swoim hasłem.
Wady:
- Mało przyjazne dla użytkownika – konieczność pamiętania hasła i klucza.

3)Użytkownik może być przy logowaniu proszony o podanie tylko losowo wybranych znaków hasła. Widzę dwie opcje realizacji takiej metody. Pierwsza bardzo prosta do wykonania gdy hasło jest zapisane w bazie w postaci jawnej. Druga to zapisanie w bazie danych wszystkich k-elementowych kombinacji n-elementowego hasła w postaci zahaszowanej.
Wady:
- W przypadku pierwszym: jawna postać hasła w bazie danych.
- W przypadku drugim: bardzo duże obciążenie bazy danych (przez jednego użytkownika):

k n kombinacje bez powtórzeń
5 10 252
5 15 3003
5 20 15504

Jakich metod Wy używacie?questionmark.gif
Go to the top of the page
+Quote Post
Ludvik
post 23.05.2007, 12:58:09
Post #2





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


Pierwsza metoda jest raczej niezawodna. Najsłabszym ogniwem jak zawsze jest człowiek, więc ile byś się nie namęczył, to i tak głupi użytkownik będzie miał hasło łatwe do złamania. Można z tym walczyć, ale nie wiem czy to opłacalne.

Drugi niewygodny i wcale niedużo bezpieczniejszy.

Trzeci sposób zabije bazę, a razem z nią użytkownika, który będzie literował hasło przed wpisaniem. A jeżeli nie zabije bazy, to przy włamaniu haseł nawet nie trzeba będzie odkodować...


--------------------
Go to the top of the page
+Quote Post
Balon
post 23.05.2007, 13:02:26
Post #3





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

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


Zależy do czego winksmiley.jpg Jeśli nie myślisz o banku internetowym tongue.gif, przechowywaniu haseł online to najlepiej skorzystaj z biblioteki Auth z PEAR.


--------------------
Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki
Go to the top of the page
+Quote Post
joebezucha
post 23.05.2007, 13:39:05
Post #4





Grupa: Zarejestrowani
Postów: 43
Pomógł: 1
Dołączył: 23.05.2007
Skąd: Gliwice

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


Tez peirwsza opcja wydaje mi sie najwygodniejsza i dostatecznie skuteczna do wiekszosci zastosowań. Ale ciekawi mnie wlasnie jak dziala system autoryzacji do banków gdzie uzytkownik podaje wybrane litery hasła.
Pomijajac aspekt wygody uzytkownika.
Np. w banku ING podaje sie 5znaków z max 32 (exclamation.gif!) Jesli jest to robione tak jak opisalem z zapisem zahaszowanych wszystkich kombinacji do bazy danych to w najgorszym przypadku byloby tego ponad 200tys wpisow dla jednego uzytkownika...srednio pewnie pewnie wiekszosci uzytkownikow ma hasla max 12 znakowe wiec to "tylko" takich 1000 kombinacji. Nie wyobrazam sobie natomiast zeby hasla byly w postaci jawnej.

Jakies pomysly jak to dziala? smile.gif
Go to the top of the page
+Quote Post
Darti
post 23.05.2007, 15:39:18
Post #5





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


Może w ING jest tak, że szyfrują każdy znak całego hasła oddzielnie albo parami ? To zmniejszało by ilość kombinacji...

edit:
trochę bez sensu jednak by to było smile.gif

Ten post edytował Darti 23.05.2007, 15:39:44


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
joebezucha
post 23.05.2007, 16:29:04
Post #6





Grupa: Zarejestrowani
Postów: 43
Pomógł: 1
Dołączył: 23.05.2007
Skąd: Gliwice

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


hehe Darti dzieki za oswiecenie:)

Faktycznie najlepsza metoda to zapisywac w bazie kazdy znak w postaci zahaszowanej z dodanym prefixem innym dla kazdego kolejnego znaku hasla tak aby uniemozliwic odgadniecie skrutu (z jednej litery byloby to zbyt proste) i prefixu (gdyby byl jeden i ten sam)

no to chyba koniec tego tematu chyba ze ktos ma jeszcze jakies uwagii
Go to the top of the page
+Quote Post
gWd
post 1.06.2007, 23:04:33
Post #7





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 17.09.2006

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


Cytat(joebezucha @ 23.05.2007, 09:48:09 ) *
1)hasło zapisane w bazie danych zostaje wczesniej uzupełnione o prefix i zakodowane algorytmem haszującym (np. SHA256 lub SHA512). Prefix znacznie utrudni atak słownikowy.

W jaki sposób prafix ma zabezpieczyć przed metodą słownikową? Przecież interfejs użytkownika i tak zawsze ten prefiks doda. No chyba, że potencjalny włamywacz ma dostęp do bazy i Tobie zależy tylko na utrudnieniu rozkodowania haseł. W standardowych rozwiązaniach prefix jest całkowicie zbędny.


--------------------
art of programming
Go to the top of the page
+Quote Post
Ludvik
post 1.06.2007, 23:10:02
Post #8





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


Prefix dobrze chroni przed atakiem słownikowym na ukradzione ciastko. Jeżeli chcesz przenosić dane użytkownika między sesjami, to musisz zapisać w ciastku jego login i hasło. Hasło zapisujesz oczywiście zahashowane. Prefiks nie wyjdzie poza obręb serwera, więc włamywacz nie dowie się o nim i będzie próbował zwykłego słownika, a to mu chyba nie wyjdzie...


--------------------
Go to the top of the page
+Quote Post
sp_
post 3.12.2007, 13:50:04
Post #9





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 9.09.2007

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


Cytat(gWd @ 1.06.2007, 23:04:33 ) *
No chyba, że potencjalny włamywacz ma dostęp do bazy i Tobie zależy tylko na utrudnieniu rozkodowania haseł.


Gdybym był 'włamywaczem' i miał dostęp do bazy, to dałbym sobie spokój z rozkodowywaniem haseł winksmiley.jpg
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.07.2025 - 22:05