International PHP Conference 2015

crack_check

(PECL crack >= 0.1)

crack_checkEffettua un controllo nascosto con la password data

Descrizione

bool crack_check ( resource $dictionary , string $password )
bool crack_check ( string $password , string $username = "" , string $gecos = "" , resource $dictionary = NULL )

Effettua un controllo nascosto con la password data sul dizionario specificato. La firma alternativa tiene anche conto dello username e delle informazioni GECOS.

Avviso

Questa funzione è SPERIMENTALE. Ovvero, il comportamento di questa funzione, il nome di questa funzione, in definitiva tutto ciò che è documentato qui può cambiare nei futuri rilasci del PHP senza preavviso. Siete avvisati, l'uso di questa funzione è a vostro rischio.

Elenco dei parametri

dictionary

Il dizionario della cracklib. Se non specificato, verrà utilizzato l'ultimo dizionario aperto.

password

La password da controllare.

username

Lo username dell'account con la password.

gecos

Le informazioni GECOS associate con l'account utente.

Valori restituiti

Restituisce TRUE se password è forte, o FALSE in caso contrario.

Log delle modifiche

Versione Descrizione
0.3 I parametri username, gecos e dictionary sono stati aggiunti alla firma alternativa.

add a note add a note

User Contributed Notes 2 notes

up
-1
Anonymous
5 years ago
In addition to the usual checks crack can also check for similarities between the password and a username and gecos field (the gecos field normally contains the person's full name on unix systems).

There is a third format for the function call which supplies these additional parameters:

bool crack_check (string $password, string $username, string $gecos, resource $dictionary)

This is true of PECL crack version 0.4, I'm not sure about earlier versions.
up
-1
vkontakte at mralston dot com
5 years ago
If you need to test a password with cracklib but don't have the necessary module available in PHP, you can use a function like this.
It requires the command line cracklib-check binary in /usr/sbin, but changing its location is trivial.
The $message variable will contain cracklib's complaint (if there is one)
You'll want to wrap your invocation of this function in a try...catch block.

<?php
function cracklibCheck($password, &$message)
{
   
// Clean up password
   
$password=str_replace("\r", "", $password);
   
$password=str_replace("\n", "", $password);

   
// Run password through cracklib-check
   
exec("echo ".escapeshellarg($password)." | /usr/sbin/cracklib-check 2>/dev/null", $output, $return_var);
   
   
// Check it ran properly
   
if($return_var==0)
    {
        if(
preg_match("/^.*\: ([^:]+)$/", $output[0], $matches))
        {
           
// Check response
           
if(strtoupper($matches[1])=="OK")
            {
               
// Password is strong
               
$message="";
                return(
true);
            }
            else
            {
               
// Cracklib doesn't like it
               
$message=$matches[1];
                return(
false);
            }
        }
        else
        {
           
// Badly formatted response from cracklib-check.
           
throw new Exception("Didn't understand cracklib-check response.");
        }
    }
    else
    {
       
// Some sort of execution error
       
throw new Exception("Failed to run cracklib-check.");
    }
}
?>
To Top