 |
Mycket flitig postare
|
|
Reg.datum: Jun 2004
Inlägg: 598
|
|
Mycket flitig postare
Reg.datum: Jun 2004
Inlägg: 598
|
Det går att göra ganska enkelt om du använder PHP. Du har funktionen crypt(). Om du vill använda shadow så kan du helt enkelt opna filen och söka efter din "användare".
Exempelvis kod nedan:
$lines = file(/etc/shadow);
foreach ( $lines as $line ){
$line = explode(":",$line);
if ( $line[0] == $_POST['username'] ) {
$password = $line[1];
$userpw = $_POST['password'];
$userpw = crypt($userpw,$password);
if ( $userpw == $password ){
$_SESSION['username'] = $_POST['username'];
} else {
print "Passwords don't match";
}
OSV OSV. Alltså använd funktionen crypt och använd din shadowlösenord som salt. Då ska du få samma krypterade sträng som shadowlösenordet ifall det är korrekt lösenord.
Det är ett sätt. Eventuellt skulle man kunna fixa det genom apache-autenticering mha .htaccess men jag har för mig att htpasswd använder sig av något annat än vanligt crypt. Jag är dock osäker så det vill jag lämna dig som en övning att ta reda på.
Personligen gillar jag mer att implementera autenticering i PHP eftersom det ser snyggare ut än att den ruta poppar upp. Dessutom har du då bättre kontroll över hur lång sessionen får vara osv.
/Zoran
|