Ragazzi sto implementando un login in questo modo:
# Al login, il server genera un valore casuale, lo memorizza in una variabile di sessione e lo scrive fisicamente nel codice Javascript contenuto nella pagina, assegnandolo ad una variabile Javascript.
# Quando l'utente invia il form con i dati, viene chiamata una funzione Javascript che calcola innanzitutto l'md5() della password, e poi l'informazione combinata, ovvero l'md5() del "valore casuale più l'md5() della password".
# I contenuti del campo della password nel form vengono cancellati e la funzione Javascript assegna l'informazione combinata ad un campo hidden del form.
# I contenuti del form vengono finalmente inviati al server attraverso il metodo post.
# L'eventuale intercettatore intercetta il valore combinato, ma non se ne farà nulla.
# Il server riceve il valore combinato e controlla che sia effettivamente ciò che esce fuori facendo l'md5() del valore casuale (che sta in una variabile di sessione) con l'md5() della password (che sta nel database).
# Se i valori corrispondono allora l'utente ha inserito la giusta password e il sistema di autenticazione considera l'utente autenticato.
Questa è la pagina di login:
Codice PHP:
<?php
//Restituisce l'attuale data e orario misurata in numero di secondi dalla Unix Epoch
$idSessione = time();
//La variabile di sessione challengeword è il valore casuale con cui la password inserita dall'utente viene combinato.
$_SESSION['challengeword'] = md5(rand(0,10000));
?>
<script type="text/javascript" src="inc/md5.js"></script>
<script type="text/javascript">
<!--
function encrypt () {
<? echo "var challengeword = '" . $_SESSION['challengeword'] . "' ;" ; ?>
var psw = document.login.psw.value ;
if (psw) {
psw = hex_md5 (psw) ;
psw = hex_md5 (psw + challengeword) ;
document.login.psw.value = '' ;
document.login.md5ed.value = psw ;
}
}
// -->
</script>
<form name="login" method="post" action="doLogin.php" onsubmit="encrypt () ">
Nome utente: <input type="text" name="username">
Password <input type="password" name="psw">
<input type="hidden" name="md5ed" value="">
<input type="hidden" name="login" value="1">
<input type="submit" value="Login">
</form>
Ora il problema sta nella pagina di controllo della password.
In pratica non riesco a fare la decriptazione della password + la challengeword
Questa è la pagina incriminata:
Codice PHP:
<?
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>NoiDelBds</title>
<script type="text/javascript" src="inc/md5.js"></script>
<script type="text/javascript">
<!--
<? echo "var challengeword = '" . $_SESSION['challengeword'] . "' ;" ; ?>
<? echo "var md5ed = '" . $_POST['md5ed'] . "' ;" ; ?>
var psw = hex_md5 (md5ed - challengeword) ;
alert(psw);
// -->
</script>
</head>
<body>
</body>
</html>
Qualcuno sa aiutarmi???