Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Problema Sql Apici In Form Login

    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 SQLUPDATE 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

  2. #2
    Codice PHP:
    addslashes($string); 
    Quando tiri fuori dal database:

    Codice PHP:
    stripslashes($string); 

  3. #3
    si bastano le funzioni addslashes e stripslashes

    comunque come consiglio generico non scrivere il codice HTML all'interno delle variabili PHP rende tutto il codice incomprensibile.
    "Non ho paura dei computer, ma della
    loro eventuale mancanza."
    Isaac Asimov

  4. #4
    Mi sembra strano che mysql_real_escape_string() ti dia problemi...
    devi farla cosi:

    mysql_real_escape_string($form_user);
    mysql_real_escape_string($form_pwd);

  5. #5
    Ho provato ma non risolve io problema

    appare sempre errore sql e dice che username contiene apice (')

    noto che molte volte nella pagina richiama $form_user con delle funzioni if

    non capisco come sostituire questo apice in automatico è troppo complessa la pagina

    se qualcuno puo dirmi cosa sostituire per sistema

    vi ringrazio per aiuto

    Originariamente inviato da DKiller92
    Mi sembra strano che mysql_real_escape_string() ti dia problemi...
    devi farla cosi:

    mysql_real_escape_string($form_user);
    mysql_real_escape_string($form_pwd);

  6. #6
    Risolto anche questo

    A presto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.