Jak wygenerować bezpieczne, PHP Skrypty


[PHP] Jak wygenerować bezpieczne, losowe hasło dla użytkownika?

0x01 graphic

Chcesz wygenerować użytkownikowi losowe hasło, którego będzie używał do chwili, aż nie zmieni go na inne.

0x01 graphic

Wszystkie poufne informacje, a także konta internetowe czy bazy danych wymagają autoryzacji i podania hasła. Zakładając hasło użytkownikowi po raz pierwszy warto je wygenerować losowo, co zapewni, że nikt nie będzie go w stanie łatwo odgadnąć. Po uruchomieniu konta wystarczy przesłać hasło do użytkownika i poprosić go, aby jak najszybciej zmienił je na własne, dowolne.

Wygenerujmy więc hasło losowe składające się z podanego zestawu znaków. Jego długość też będzie losowa, ale nie będzie krótsze lub dłuższe niż założona ilość znaków.

Przykład hasła losowego: Gjx5xY2

<?

$min=6;

$max=12;

srand((double)microtime()*1000000);

for($i=0;$i<rand($min,$max);$i++) {

$znak=chr(rand(48,122));

if (eregi("[0-9a-zA-Z]",$znak)) $haslo .= $znak;

else $i--;

}

echo "Twoje hasło: <b>$haslo</b>";

?>

Na początku skryptu podajemy akceptowaną długość hasła losowego. W naszym przypadku może ono mieć od 6 do 12 znaków włącznie. Następnie inicjujemy generator liczb losowych, aby wartości były jak najbardziej przypadkowe i w pętli losujemy znaki z zakresu od 48 (cyfra "0") do 122 (litera "z").

Jeżeli znak znajduje się w podanym zakresie, a więc jest cyfrą lub literą, akceptujemy go i dodajemy do hasła. Jeżeli jest innym znakiem, zmniejszamy licznik pętli i losujemy ponownie hasło aż będzie odpowiadało znakom z podanego zakresu.

Wśród znaków o kodach ASCII od 48 do 122 są również nawiasy, małpa i wiele innych symboli, które nie zawsze można w hasłach zastosować. Dlatego funkcja eregi() sprawdza, czy znak jest w określonym przez nas zakresie.

Funkcja chr() zwraca znak o określonym numerze z tablicy ASCII, np. numer 122 to mała litera "z". W wyrażeniu regularnym [0-9a-zA-Z] można dodawać kolejne znaki, np. [0-9a-zA-Z%:=] zaakceptuje również procenty, dwukropki i znak równości.

Możesz też wygenerować wiele haseł za jednym razem, np. 10 i zapisać je do pliku:

<?

function haslo() {

$min=6; $max=12;

for($i=0;$i<rand($min,$max);$i++) {

$znak=chr(rand(48,122));

if (eregi("[0-9a-zA-Z]",$znak)) $haslo .= $znak;

else $i--;

}

return $haslo;

}

srand((double)microtime()*1000000);

$f=fopen("hasla.txt","w");

for ($i=0;$i<10;$i++) {

fputs($f, haslo()."\n");

}

fclose($f);

?>



Wyszukiwarka

Podobne podstrony:
Jak wygenerować statyczny plik .html z bazy danych, PHP Skrypty
Jak wygenerować niepowtarzalny identyfikator użytkownika, PHP Skrypty
Jak wysłać ze strony WWW e-mail z dowolnym załącznikiem, PHP Skrypty
Jak przerwać wykonywanie pętli (for, PHP Skrypty
Jak stworzyć prostą wyszukiwarkę dla własnych stron WWW, PHP Skrypty
Jak stworzyć zaawansowany test wyboru lub quiz, PHP Skrypty
Jak zrobić stronę dostępną na hasło tylko dla wybranych użytkowników, PHP Skrypty
Jak wyświetlić zawartość katalogu jako linki służące do pobrania plików, PHP Skrypty
Jak pobrać zawartość strony WWW korzystając z biblioteki CURL, PHP Skrypty
Jak uzyskać kolejny numer (id) ostatnio wstawionego rekordu, PHP Skrypty
Jak chronić adres e-mail na stronie przed spamem stosując przekierowanie, PHP Skrypty
Jak pokazać i skąd wziąć imieniny przypadające na aktualny dzień, PHP Skrypty
Jak wypisać na ekranie w PHP zawartość dowolnej tabeli, PHP Skrypty
Jak stworzyć indeks pierwszych liter dla wybranej kolumny z tabeli, PHP Skrypty
jak wyliczyc kiedy nastapi wschod i zachod slonca dla dowolnego dnia, PHP Skrypty
jak przeslac dane z pol tekstowych do innych stron, PHP Skrypty
Jak pobrać i zapisać na dysk wskazane strony WWW, PHP Skrypty
jak przeliczyc biorytm dowolnego dnia, PHP Skrypty

więcej podobnych podstron