Allora io ho fatto in questo modo... secondo voi può andar bene??
Nella pagina dove vado ad inserire unsername e password che sta su aruba,
creo una random string di lunghezza 10 caratteri
Codice PHP:
function random_string($length){
$string = "";
// genera una stringa casuale che ha lunghezza
// uguale al multiplo di 32 successivo a $length
for ($i = 0; $i <= ($length/32); $i++)
$string .= md5(time()+rand(0,99));
// indice di partenza limite
$max_start_index = (32*$i)-$length;
// seleziona la stringa, utilizzando come indice iniziale
// un valore tra 0 e $max_start_point
$random_string = substr($string, rand(0, $max_start_index), $length);
return $random_string;
}
$random_string = random_string(10);
$_SESSION['stringa']=$random_string;
$_SESSION['ip']=$_SERVER['REMOTE_ADDR'];
quindi faccio form inviando uername e password, e in hidden la stringa random e l'ip dell'utente all'altro server OK??
A questo punto sul server cosa faccio...
Codice PHP:
//mi recupero questi dati inviati
$usr=$_POST['usr'];
$pwd=$_POST['pwd'];
$str=$_POST['stringa'];
$ip=$_POST['ip'];
// faccio la connessione al db non aruba...
$link = mysql_connect('localhost', 'root', 'root')
or die('Could not connect: ' . mysql_error());
//echo 'Connected successfully';
mysql_select_db('database') or die('Could not select database');
// e controllo username e password
$query = "SELECT * FROM iscritti where username='".$usr."' and password='".$pwd."'";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
$row=mysql_fetch_array($result);
$cf=$row["cf"];
//A questo punto se username e password sono esatti cioè se il codice fiscale è pieno, visto //che è un campo obbligatorio, ritorno sul server aruba alla pagina ricerca.php altrimenti //ritorno all'index.php da dove sono partito, con un errore.
if(isset($cf)){
$segreta="£$%&=8()/&!56";
$mycode=$str . $segreta . $ip;
$mystrmd5=MD5($mycode);
header("location:[url]http://www.serveraruba.com/test/ricerca.php?code=[/url]" . $mystrmd5.$cf);
}else{
header("location:[url]http://www.serveraruba.com/test/index.php?errore=1[/url]");
}
//come si vede se sono autenticato gli mando in get alla pagina un' hash che è composto
//dalla stringa che ho inviato, da una password decisa da me e dall'ip dell'utente che ho //ricevuto in più attaccato gli invioo il codice fiscale in chiaro.
Quando ricevo i dati sulla pagina ricerca.php che si trova su aruba, faccio come segue...
Codice PHP:
session_start();
//ricevo il codice che comprende hash + codice fiscale.
$codeAUT_cf=$_GET["code"];
//Mi risetto anche sul server aruba la stessa password
$segreta="£$%&=8()/&!56";
//Mi recupero dalla sessione la stringa creata prima di inviare il tutto e l'ip dell'utente
$str=$_SESSION['stringa'];
$ip=$_SESSION['ip'];
// e mi ricreo un hash allo stesso modo
$codice=$str . $segreta . $ip;
$mycodicemd5=MD5($codice);
//Mi estraggo dalla stringa ricevuta solo l'hash per confrontarli
$codeAUT = substr($codeAUT_cf, 0, 32);
// se sono uguali sono autenticato e mi prendo il mio codice fiscale se no.. mi da errore.
if($codeAUT==$mycodicemd5){
echo "<H3>AUT OK!!!</H3>";
$codice_fiscale = substr($codeAUT_cf, -16);
echo "ECHO CODICE FISCALE:::::" . $codice_fiscale . "
";
}else{
echo "<H3>Errore!!!!!!!</H3>";
}
Come la vedete questa operazione..... credo che una certa sicurezza ci sia o no???
Almeno credo di aver seguito il tuo consiglio filippo o dicevi diversamente?
Inoltre se così secondo voi potrebbe andar bene, ci potrebbe essere il modo per cifrare anche il codice fiscale preso dal db... in modo da inviare una stringa che all'apparenza sia solo di numeri e lettere casuali.... e poi decifrarlo una volta ricevuto sul server aruba..
Grazie di qualsiasi suggeritmento
Giuseppe