Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Hasła jednorazowe
Forum PHP.pl > Inne > Hydepark
Danone
Witam Was,

Chciałbym się poradzić w jaki sposób rozwiązalibyście hasła jednorazowe tak jak w bankach internetowych? Ja np myślałem o przechowywaniu takich haseł w tablicy i losowo wybierać numer hasła i prosić o wpisanie przy autoryzacji... smile.gif wiem, że to jest mało bezpiecznie ponieważ jest to jawnie zapisane w skrypcie... ale może macie jakieś inne pomysły?
Sadu2
Dołączam się do postu wyżej.
Crozin
Kartę kodów jednorazowych można by rozwiązać w następujący sposób

Tabela w bazie danych z polami:
IDuzytkownika
IDkarty - id aktualnie aktywnej karty
numerPola - na mojej karcie kodów jest takich 40
wartosc - np. 651349
wykorzystane - 0 - nie, 1 - tak

Wykonując jakąś "ważną" operację prosisz o podanie wartości z najbliższego wolnego pola:
  1. SELECT numerPola, wartosc FROM kartyKodow WHERE IDuzytkownika = 123 AND IDkarty = 0000156467 AND wykorzystane = 0 ORDER BY numerPola ASC LIMIT 1 ;


Potem wystarczy już tylko sprawdzić:
  1. <?
  2.  
  3. if($_POST['kodZFormularza'] == $row['wartosc']){
  4. //wykonanie danej operacji
  5. //zdezaktywowanie 1 kodu
  6. }else{
  7. //blad
  8. }
  9.  
  10. ?>
Zbłąkany
IMHO bez sensu, lepiej użyć CAPTCHA lub Asirra smile.gif
Moli
@Zbłąkany - Captcha jeszcze ale Asirra jest chyba jeszcze większym utrudnieniem smile.gif A po za tym, uzytkownik nie pytał co lepsze a jak rozwiązac takie coś.
Danone
Nad takim rozwiązaniem myślałem, które podał Cronin, ale jednak jest to jawne przechowywanie w bazie, myślałem nad czymś takim jak generowanie liczb pseudolosowych... Korzystał ktoś kiedyś z takiego rozwiązania? Pytam, ponieważ pisze prace inżynierską a temat jest związany ze stworzeniem banku internetowego smile.gif
Moli
Kody musisz gdzieś przechowywać. Będzie to dużo bezpieczniejsze niż losowanie licz czy inny wybryki. Stwórz w bazie tabele z kodami i po wpisaniu poprawinie kodu, przenos go do innej tabeli (zapobiegac to bedzie powtarzaniu się kodów).
ucho
Listę haseł jednorazowych można trzymać w dość ciekawy sposób - w postaci jednego hasła smile.gif Najpierw generujemy 20 haseł czymś w stylu następne= substr(sha256(salt(np. numer konta)+poprzednie)) i zwracamy użytkownikowi w odwrotnej kolejności, w bazie zapamiętujemy tylko ostatnie. Kiedy user wykonuje operacje sprawdzamy czy jego hasło po podstawieniu do wzoru da nam to co mamy w bazie, jeśli tak to zezwalamy na operacje i zapamiętujemy to hasło w bazie.
Spora oszczędność miejsca ale nie da się żądać kolejnych haseł z listy jeśli user nie poda poprawnego poprzedniego.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.