Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1

    PHP filtraggio caratteri dannosi

    Salve ragazzi,

    nel login e nella registrazione voglio impedire a tutti i costi le SQL injection e tutti i tipi di attacchi (in questo caso parliamo di sql injection).

    Nel login sto filtrando l'username e la password cosi:

    $username = trim(filter_var($_POST['username'], FILTER_SANITIZE_STRING));

    Tolti gli spazi all'inizio e alla fine ->

    $username = ereg_replace("[^A-Za-z0-9_\-\./, ]", "", $username);

    Tolti i caratteri dannosi e sostituiti con uno spazio ->

    $username = mysql_real_escape_string($username);

    Filtrati i caratteri dannosi mysql.

    $username = trim(filter_var($username, FILTER_SANITIZE_SPECIAL_CHARS));

    filtro ancora i caratteri dannosi.

    Adesso dovrei aver filtrato correttamente tutti i caratteri dannosi, ma osservando la mia query decido di provare a mettere al posto della password o dell'username un po' di codice sql:

    quindi inserisco: "1" OR "1" = "1"

    secondo i mie filtraggi tutti quei caratteri li avrei dovuti RIMUOVERE, ma se li ho rimossi, per quale motivo sul controllo mi da Access denied come se stessi riuscendo ad entrare nel database ma netsons mi blocca? Dovrei visualizzare il messaggio classico di errore che mi appare quando sbaglio la password no? Esistono dei filtraggi migliori?
    Potete testare anche voi:
    http://www.virtualdimension-studios.com/

    Un'altra cosa, supponiamo che il nome utente sia: ciao e la password ciao
    se io provo ad inserire username: "ciao e password: ciao

    dovrei riuscire a loggare correttamente se filtra il " no? Invece mi da password errata... ciò non succede con = ad esempio.. se metto username: =ciao password: ciao, mi logga comunque..
    Grazie.

  2. #2
    Magari è un problema di codice ma se non ce lo fai vedere potrebbe essere finita la benzina.. hai controllato?
    Questa volta, più che un voto.. è favoreggiamento.

  3. #3
    ma usando PDO e bindParam non dovrebbe farli lui tutti questi controlli?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Adesso vi posto il codice, ma ho pensato comunque a quello che potrebbe essere per quanto riguarda l'access denied, io il controllo e la pulizia dati li faccio nel file di controllo al quale le variabili POST sono spedite dal form in index.php ... probabilmente da access denied durante l'invio di quelle variabili post al file, netsons rileva che in quelle variabili ci sono caratteri dannosi e blocca l'invio di queste.. almeno questo è quello che penso, per la questione della non-rimozione dei caratteri "

    non so proprio. Vi posto il codice:

    index.php dal quale effettuo il login:
    codice:
    <form action="/check.php" method="POST">
             <label>Username</label><input type="text" name="username" />
             <label>Password</label><input type="password" name="password" />
             <label>[img]/images/register_button.png[/img]</label><input type="submit" value="Login" class="loginbutton">
             </form>
    check.php che pulisce le variabili e effettua il controllo:

    codice:
    if(!isset($_POST['username']) OR $_POST['username']=="" OR !isset($_POST['password']) OR $_POST['password']==""){
    
    header('location: index.php?message=loginerror2');
    
    } else {
    
    //puliamo i dati
    
    $username = trim(filter_var($_POST['username'], FILTER_SANITIZE_STRING));
    
    $username = ereg_replace("[^A-Za-z0-9_\-\./, ]", "", $username);
    
    $username = mysql_real_escape_string($username);
    
    $username = trim(filter_var($username, FILTER_SANITIZE_SPECIAL_CHARS));
    
    $password = trim(filter_var($_POST['password'], FILTER_SANITIZE_STRING));
    
    $password = ereg_replace("[^A-Za-z0-9_\-\./, ]", "", $password);
    
    $password = mysql_real_escape_string($password);
    
    $password = trim(filter_var($password, FILTER_SANITIZE_SPECIAL_CHARS));
    
    //generiamo l'hash
    
    $md5 = md5($password);
    
    
    $result = mysql_query("SELECT * FROM utenti WHERE username = '$username' AND password = '$md5'");
    
    //se la query ha restituito 0 righe, non esiste nessun user con username e password inseriti
    
    if(mysql_num_rows($result)==0)
    
    header('location: index.php?message=loginerror1');
    
    else{
    
    $_SESSION['loggedin']=1;
    $_SESSION['utente']=$username;
    header('location: index.php?message=loginok');
    }
    Vi ho inserito anche i commenti per farvi capire meglio.

    A cosa può esser dovuto? grazie.

  6. #6
    perchè nessuno di quei codici ti salva da 1" OR "1=1", quindi quando fai SELECT * FROM utenti WHERE username = '$username' AND password = '$md5' ecco la sql injiection.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    Originariamente inviato da Santino83_02
    perchè nessuno di quei codici ti salva da 1" OR "1=1", quindi quando fai SELECT * FROM utenti WHERE username = '$username' AND password = '$md5' ecco la sql injiection.
    come dovrei fare?

  8. #8
    Originariamente inviato da RuggeriExtreme
    come dovrei fare?
    i link che ti ho postato prima sono un esempio
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  9. #9
    se stiamo parlando di validazione dei dati secondo me l'approccio è sbagliato.. Tu stai usando funzioni di sanitizzazione dei dati..
    Questa volta, più che un voto.. è favoreggiamento.

  10. #10
    Originariamente inviato da Al_katraz984
    se stiamo parlando di validazione dei dati secondo me l'approccio è sbagliato.. Tu stai usando funzioni di sanitizzazione dei dati..
    puoi postarmi delle funzioni che eliminino direttamente quei caratteri?

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.