Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Salvy95
    Registrato dal
    Jul 2008
    Messaggi
    199

    [PHP] Classe funzionante ma possibile falla di sicurezza

    Ciao belli, ho scritto una classe in php, è la mia prima classe come si deve, volevo chiedervi un aiutino! la classe funziona e viene correttamente richiamata dal file login.php due directory più in alto, non ci sono problemi, volevo solamente chiedervi se possono esserci magari problemi di sicurezza, ecco a voi:

    Codice PHP:

    <?

    $obj 
    = new dos();
    $obj-> login('Salvy',base64_encode('12345678'));


    class 
    dos{
    public function 
    login($UserName,$Base64Pass){
    include(
    'config.php');
    $db mysql_connect($dbhost$dbuser$dbpasswd);
    mysql_select_db($dbname$db)
    or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    /*Gestita connessione al database */
    session_start();
    $query "SELECT * FROM reg_users WHERE UserName='".$UserName."' AND PassWord='".$Base64Pass."'";
    $x mysql_query ($query$db);
    if(
    mysql_num_rows($x)==1){/* 2 Se i dati inseriti sono giusti... fai questo... */
    if($this->check_if_right(mysql_fetch_array($x))){
    $query="UPDATE reg_users SET session= NULL WHERE session ='".$_COOKIE['PHPSESSID']."'";
    if(!
    mysql_query ($query$db)){
    echo(
    "Si e' verificato un problema interno. Riprova ad effettuare il login!");
    session_destroy();
    }
    $query="UPDATE reg_users SET session ='".addslashes($_COOKIE['PHPSESSID'])."' WHERE UserName = '".$UserName."' AND PassWord='".$Base64Pass."'";
    if(
    mysql_query ($query$db)){
    echo(
    "Hai effettuato il login.");
    }
    else{
    echo(
    "Ciao ".$UserName" Ci sono problemi interni, riprova tra poco."); 
    }
     }
    else{
    echo(
    $this->check_if_right(mysql_fetch_array($x)));
    }
     }
    else{
    echo(
    "Errore durante il log-in. Username o Password inesatte :( "); return false;}/* 2 END Se i dati inseriti sono giusti... fai questo... */
    mysql_close($db);
     }
     
     public function 
    check_if_right($Array){
    if(
    $Array['status']=='BANNED'){/* 4 Se l'utente è bannato... fai questo... */
    session_destroy();
    echo(
    'Spiacente, sei stato bannato!');
    return 
    false;
     }
     else if(
    $Array['validate']=='FALSE'){/* 3 Se l'utente non ha validato l'account... fai questo... */
     
    session_destroy();
     echo(
    'Spiacente, non hai ancora validato il tuo account!');
    return 
    false;
     }
    else{
     return 
    true;
      }
       }
     }
    ?>
    Il mio problema è che forse faccio confusione con public e private, ho paura >.<
    Non è che magari qualcuno include questo file da un altro server, e fa qualcosa del tipo

    $obj = new dos();
    echo($obj->dbpasswd);


    aiutoooooooooooooooooooooooooooooooooooooooooooooo o

  2. #2
    Utente di HTML.it L'avatar di echoweb
    Registrato dal
    Sep 2008
    Messaggi
    419
    Ciao,

    se non dai i permessi per accedere alla cartella dove c'è la classe, penso non ci siano problemi.


    "Non soffocare la tua ispirazione e la tua immaginazione,
    non diventare lo schiavo del tuo modello"

    Vincent van Gogh

  3. #3
    Utente di HTML.it L'avatar di Salvy95
    Registrato dal
    Jul 2008
    Messaggi
    199
    ti ringrazio!

  4. #4
    La query è fallata. C'è possibilità di SQL Injection.
    Lo $username filtralo prima con mysql_real_escape_string()
    e altra cosa, è inutile codificare la password in base64, perchè è decodificabile...
    usa md5 o sha1 o meglio ancora entrambi...

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.