![]() |
![]() ![]() |
![]() |
![]()
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? ![]() |
|
|
![]()
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ć... -------------------- |
|
|
![]()
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
![]() ![]() -------------------- Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki |
|
|
![]()
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 ( ![]() Jakies pomysly jak to dziala? ![]() |
|
|
![]()
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 ![]() 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 |
|
|
![]()
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 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 17.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
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
|
|
|
![]()
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...
-------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 9.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.07.2025 - 22:05 |