Kontrola bezpečnosti hesel pomocí PHP
Jako správce stránek určitě řešíte problémy s bezpečnými hesly, proto jsem se rozhodl zveřejnit funkci vlastní výroby napsanou v PHP, která bezpečnost hesla ohlídá.
Jak vypadá bezpečné heslo? Určitě není stejné jako uživatelské
jméno (ale někteří uživatelé tyto hesla rádi používají ), obsahuje malá i velká písmena
anglické abecedy, čísla a je 6?8 znaků dlouhé. Někteří jistě
dodají, že správné heslo musí obsahovat také speciální znaky, jako jsou
@ ? ! < >
atd., proto nabízím volbu zapnutí kontroly
těchto znaků. Musím však podotknout, že většina uživatelů si tato
hesla zapamatuje jen s těží, takže spíše dosáhnete opačného efektu.
Stejně to dopadne s příliš dlouhými hesly, nebo požadavky na častou
změnu hesla.
Funkce také kontroluje zda-li heslo neobsahuje řetězce 123, abc,
xyz, 789
atd. implementaci dalších řetězců nechám na
představivosti programátora / čtenáře, který bude funkci používat.
/**
* function check password, return true (save password)
* or false (unsafe password)
* @param $pass password
* @param $user username
* @param $specchrs special chars true/false
* @param $length minimus password length
*
* @return true/false
*/
function CheckPassword($pass, $user, $specchrs = false, $length = 8) {
/* convert to small letters */
$user_small = strtolower($user);
$pass_small = strtolower($pass);
/* check password length and username in password */
if (strlen($pass) < $length ||
strstr($pass_small, $user_small))
return false;
/* check password contains big and small letters and numbers */
if (!ereg("([a-zA-Z0-9]+)", $pass, $tmp))
return false;
/* check password contains special chars as $!:?.\&@ etc */
if ($specchrs && !ereg("[[:punct:]]", $pass, $tmp))
return false;
/* check password doesn't contain abc's 123's strings
(insert only small letters!) */
$data = array("123", "abc", "xyz", "789");
foreach ($data as $value) {
if (strstr($pass_small, $value))
return false;
}
return true;
}
Funkci můžete jakkoliv modifikovat, ale budu potěšen, dáte-li mi vědět, že jste ji použili . A co bude příště? Nechte se překvapit
přidat komentář zobrazit komentáře (0) web přečteno 2140×