Salve
Chiedo un aiuto per un form di login dove inserendo gli apici ' da errori sql e dunque vulnerabile agli attacchi.
Per favore mi potete aiutare per sistemare questo errore?
Ho gia provato con lo string replace ma non sono riuscito a correggere errore
Spero che possiamo aiutarmi, ho fatto varie correzioni senza poter risolvere e sono davvero disperato oramai sono giorn che ci lavoro invanamente.
Ho gia provato ad aggiungere mysql_real_escape_string ma dopo averlo aggiunto non mi funzionava neppure piu la pagina, forse ho sbagliato ad aggiungerlo.
Sono alle prime nozioni di php dunque non so sistemare il difetto
Grazie mille per l'aiuto
Codice della pagina
Codice PHP:
<?
//**S**//
function new_session($userid, $lifespan="3600", $ipvoid) {
global $vip, $Db1;
$expirytime = (string) (time() - $lifespan);
$delresult = $Db1->query("DELETE FROM sessions WHERE start_time<$expirytime or user_id='$userid'");
$found=false;
do {
$sessid = rand_string(20);
$sessid2 = rand_string(5);
$sql=$Db1->query("SELECT * FROM sessions WHERE (sess_id = '$sessid') AND (sess_id2='$sessid2')");
if($Db1->num_rows() == 0) {
$found=true;
}
} while ($found == false);
$currtime = (string) (time());
$sql = $Db1->query("INSERT INTO sessions SET
sess_id='$sessid',
sess_id2='$sessid2',
user_id='$userid',
start_time='$currtime',
remote_ip='$vip',
ipvoid='$ipvoid'
");
return array($sessid, $sessid2);
}
if($action == "login") {
$Db1->query("UPDATE user SET lockout='' WHERE lockout!='' and lockout<".time()."");
if($settings[login_route] == 1) {
$correct_code=0;
$sql=$Db1->query("SELECT * FROM route_codes WHERE id='$rid'");
$temp=$Db1->fetch_array($sql);
if(($routing_code != $temp[code]) || ($routing_code == "") || ($rid == "")) {
$correct_code=0;
}
else {
$correct_code=1;
}
$Db1->query("DELETE FROM route_codes WHERE id='$rid'");
$Db1->query("DELETE FROM route_codes WHERE dsub<".(time()-600)."");
}
if(($correct_code==0) && ($settings[login_route] == 1)) {
$msg="<div align=\"center\">[b]Errore![/b]</div>
Inserisci Il Codice Di Sicurezza Corretto! Riprova.";
}
elseif(($form_user != "") && ($form_pwd != "")) {
$sql=$Db1->query("SELECT userid, password, username,suspended, verified, permission, lockout FROM user WHERE username='$form_user'");
if($Db1->num_rows() != 0) {
$userinfo = $Db1->fetch_array($sql);
if(($userinfo[username] == $form_user) && ($userinfo[password] == md5($form_pwd))) {
if($userinfo[suspended]==1) {
$LOGGED_IN=false;
$msg = "<div align=\"center\">[b]Errore![/b]</div>
Il Tuo Account E\' Stato Sospeso. Clicca <a href=\"index.php?view=contact&".$url_variables."\">Contattaci</a> Per Chiarimenti.";
}
else if($userinfo[lockout] > time()) {
$LOGGED_IN=false;
$msg = "<div align=\"center\">[b]Errore![/b]</div>
Il Tuo Account E' Temporaneamente Bloccato";
$remaining=($userinfo[lockout]-time())/60;
if($remaining < 1) $msg.="[b]Less than 1 minute.[/b]";
else $msg.="[b]".floor($remaining)." minutes.[/b]";
}
else if(($userinfo[verified]==0) && ($settings[verify_emails] == 1)) {
$Db1->sql_close();
header("Location: index.php?view=resend_act&action=resend&uname=$form_user&".$url_variables."");
exit;
$LOGGED_IN=false;
$msg = "<div align=\"center\">[b]Errore![/b]</div>
La Tua Email Non E' Stata Verificata.
[*]<a href=\"index.php?view=verify\">Inserisci Il Codice Di Verifica</a>[*]<a href=\"index.php?view=resend_act\">Rimanda Il Codice Di Verifica</a>[*]<a href=\"index.php?view=update_email\">Cambia Il Mio Indirizzo Email</a>
";
}
else {
$userid=$userinfo[userid];
$username=$userinfo[username];
$permission=$userinfo[permission];
session_start();
$sessids = new_session($userid,"3600",$ipvoid);
$sessid=$sessids[0];
$sessid2=$sessids[1];
$sessiduid=$userid;
session_register('sessid');
session_register('sessid2');
session_register('sessiduid');
$session_sessid=$sessid;
$session_sessid2=$sessid2;
$session_sessiduid=$sessiduid;
$_SESSION["sessid"] = $sessid;
$_SESSION["sessid2"] = $sessid2;
$_SESSION["sessiduid"] = $sessiduid;
$Db1->sql_close();
header("Location: setcookies.php?".iif(isset($returnTo),"view=$returnTo","view=account&ac=main")."".iif("$id","&id=$id").iif($ptype,"&ptype=$ptype").iif($step,"&step=$step")."".iif(isset($ac),"&ac=$ac")."&sid=$sessid&sid2=$sessid2&siduid=$userid");
exit;
}
}
else {
$LOGGED_IN=false;
$msg = "<div align=\"center\">[b]Errore![/b]</div>
Si E' Verificato Un Errore Durante Accesso, Riprova";
}
}
else {
$sql=$Db1->query("SELECT * FROM user_deleted WHERE username='$form_user'");
if($Db1->num_rows() != 0) {
$msg = "<div align=\"center\">[b]Errore![/b]</div>
Il Tuo Account E' Stato Cancellato, Per Maggiori Chiarimenti Contattaci";
}
else {
$msg = "<div align=\"center\">[b]Errore![/b]</div>
Il Tuo Account Non E' Iscritto In Questo Sito";
}
}
}
else {
$msg = "<div align=\"center\">[b]Errore![/b]</div>
Si E' Verificato Un Errore Durante Accesso, Riprova";
}
}
if($msg != "") {
$Db1->query("UPDATE user SET failed_logins=failed_logins+1 WHERE username='$form_user'");
}
if($settings[login_route] == 1) {
srand((double)microtime()*1000000);
$number = rand(1000,9999);
$Db1->query("INSERT INTO route_codes SET
code='$number',
dsub='".time()."'
");
$sql=$Db1->query("SELECT id FROM route_codes WHERE
code='$number' and
dsub='".time()."'
");
$temp=$Db1->fetch_array($sql);
$rid=$temp[id];
}
//**E**//
$includes[content]="
<font color=\"darkred\">$msg</font>
<div align=\"center\">
<form action=\"index.php?view=login&action=login&".iif($rid!="","rid=$rid&")."".$url_variables."\" method=\"post\" onSubmit=\"submitonce(this)\">
<table class=\"tableBD1\" cellpadding=0 cellspacing=0>
<tr>
<td>
<table cellpadding=0 cellspacing=1>
<tr>
<td class=\"tableHL1\">
<input type=\"hidden\" value=\"$returnTo\" name=\"returnTo\">
<input type=\"hidden\" value=\"$id\" name=\"id\">
<input type=\"hidden\" value=\"$ac\" name=\"ac\">
<input type=\"hidden\" value=\"$step\" name=\"step\">
<input type=\"hidden\" value=\"$ptype\" name=\"ptype\">
<div align=\"center\">
[b]Accesso Utenti[/b]
</div>
</td>
</tr>
<tr>
<td class=\"tableHL1\">
Username* <input type=\"text\" class=\"login\" size=\"15\" name=\"form_user\">
Password* <input type=\"password\" class=\"login\" size=\"15\" name=\"form_pwd\">
</td>
</tr>
<tr>
</tr>
<tr>
<td class=\"tableHL1\" align=\"center\">
".iif($settings[login_route]==1,"
<img src=\"route.php?rid=$rid\">
Inserisci Codice Sicurezza:".("")."
<input type=\"text\" name=\"routing_code\" size=4>
</td>
</tr>
<tr>
<td class=\"tableHL1\" >
")."
<div align=\"center\"><input type=\"submit\" value=\"Accedi\" class=\"login_submit\"></div>
</td>
</tr>
</table>
</td>
</tr>
</table>
[size="1"]*Attenzione Ai Caratteri Minuscoli E MAIUSCOLI[/size]
[size="1"]*Se Non Leggi Il Codice Ricarica La Pagina[/size]
[size="1"][b]
<a href=\"index.php?view=join&".$url_variables."\">Iscriviti</a>
<a href=\"index.php?view=lostpwd&".$url_variables."\">Password Dimenticata?</a>
<a href=\"index.php?view=verify&".$url_variables."\">Attiva Il Tuo Account</a>
[/b][/size][b][/b]
</form></div>
";
?>
Errore visualizzato quando si inserisce un apice ' nel forum di login
Codice PHP:
Database error: Invalid SQL: UPDATE user SET failed_logins=failed_logins+1 WHERE username='''
MySQL Error: 1064 (You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''''' at line 1)
Session halted.