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

    Login sicura da SQL INJECTION

    Ciao, vorrei realizzare un sistema di autenticazione per un'area riservata, che sia sicura al 100% da hacker e sql injection. Un sistema simile può considerarsi sicuro?:

    <?
    /* Check User Script */

    function Formatta($campo) {
    $campo=htmlentities($campo);
    $campo=mysql_real_escape_string($campo);
    $campo=str_replace(";"," ",$campo);
    $campo=str_replace("--"," ",$campo);
    $campo=str_replace("+","piu",$campo);
    $campo=str_replace("'"," ",$campo);
    $campo=str_replace("("," ",$campo);
    $campo=str_replace(")"," ",$campo);
    $campo=str_replace("="," ",$campo);
    $campo=str_replace("<"," ",$campo);
    $campo=str_replace(">"," ",$campo);
    $campo=str_replace("@"," ",$campo);
    $campo=str_replace("select"," ",$campo);
    $campo=str_replace("insert"," ",$campo);
    $campo=str_replace("create"," ",$campo);
    $campo=str_replace("delete"," ",$campo);
    $campo=str_replace("drop"," ",$campo);
    $campo=str_replace("alter"," ",$campo);
    $campo=str_replace("from"," ",$campo);
    $campo=str_replace("where"," ",$campo);
    // $campo=str_replace("or"," ",$campo);
    $campo=str_replace("and"," ",$campo);
    $campo=str_replace("like"," ",$campo);
    $campo=str_replace("exec"," ",$campo);
    $campo=str_replace("script"," ",$campo);
    $campo=str_replace("<script>"," ",$campo);
    $campo=str_replace("</script>"," ",$campo);
    $campo=str_replace("shell"," ",$campo);
    $campo=str_replace("sp_"," ",$campo);
    $campo=str_replace("xp_"," ",$campo);
    $campo=str_replace("sql"," ",$campo);
    $campo=str_replace("rowset"," ",$campo);
    $campo=str_replace("oper"," ",$campo);
    $campo=str_replace("begin"," ",$campo);
    $campo=str_replace("end"," ",$campo);
    $campo=str_replace("declare"," ",$campo);
    $campo=str_replace("update"," ",$campo);
    $campo=str_replace("*","per",$campo);
    return $campo;

    }

    include 'db.php';
    // Convert to simple variables
    $username = $_POST['username'];
    $password = $_POST['password'];

    $username = Formatta($username);
    $password = Formatta($password);

    if((!$username) || (!$password)){
    echo "Inserire tutte le informazioni!
    ";
    include 'index.htm';
    exit();
    }

    // Convert password to md5 hash
    $password = md5($password);

    $query_mia = "SELECT * FROM utenti WHERE login='$username' AND password='$password' AND activated='1'";
    // check if the user info validates the db
    $sql = mysql_query($query_mia);


    $login_check = mysql_num_rows($sql);

    if($login_check > 0){
    while($row = mysql_fetch_array($sql)){
    foreach( $row AS $key => $val ){
    $$key = stripslashes( $val );
    }

    $livello = $row['user_level'];


    // Register some session variables!
    session_register('first_name');
    $_SESSION['first_name'] = $first_name;
    session_register('last_name');
    $_SESSION['last_name'] = $last_name;
    session_register('email_address');
    $_SESSION['email_address'] = $email_address;
    session_register('username');
    $_SESSION['username'] = $username;
    session_register('livello');
    $_SESSION['livello'] = $livello;


    ?>

    <script language="javascript">
    <!--
    location.replace("amministrazione.php");
    -->
    </script>
    <?
    }
    } else {
    echo "<div align=center><span class=titolo>Username o password non valide!

    Riprova!

    </span>
    <a class=link href=index.htm>TORNA INDIETRO</a></div>
    ";


    }


    ?>


    Grazie a tutti per i consigli!

  2. #2
    E' un'enorme spreco di linee
    Tutto quello che ti serve per rendere sicura una query e' mysql_real_escape_string, oppure studiare un attimo PDO e usare i prepared statements.

    Ovviamente validare l'input e' sempre una buona cosa da fare, ma la tua funzione lo fa malissimo. Ad esempio:
    codice:
    $campo=str_replace("and"," ",$campo);
    se uno si chiama "andrea" ti diventa " rea"

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.