Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    410

    Unknown column 'a' in 'where clause

    salve a tutti la seguente query
    codice:
    $ris = mysql_query("SELECT * FROM lista_utenti WHERE utente=".$user,$db);
    mi da l errore
    Unknown column 'a' in 'where clause

    'a' è il valore si $user . è come se cercasse un nome campo ='a' ma io voglio cercare un record che abbia 'a' come valore nel campo utente

  2. #2
    ti sei già risposto da solo 'a' deve essere tra apici

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    410
    ma 'a' non cè nel codice

    c'è la variabile $user

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    410
    ok ho risolto così

    codice:
    $ris = mysql_query("SELECT * FROM lista_utenti WHERE utente='$user'",$db);

  5. #5

  6. #6
    Originariamente inviato da andrewhrc
    ok ho risolto così

    codice:
    $ris = mysql_query("SELECT * FROM lista_utenti WHERE utente='$user'",$db);
    E se un nome utente contiene un apostrofo?

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    410
    ah giusto buona osservazione... devo fare il controllo sulla fase di registrazione per impedire nome utente con apostrofo ..è anche una questione di sicurezza contro gli hackeraggi

  8. #8
    Eh no
    Il problema degli "hackeraggi" (SQL inection) in teoria rimane: uno può scrivere come nome utente:
    '; DROP TABLE lista_utenti; SELECT '

    Sostituisci $user con questa stringa, e vedrai cosa diventa. Ma se hai una versione non vecchissima di PHP questo tipo di attacco non funziona, perché mysqli_query() può lanciare solo una query alla volta.

    Ma anche così ti consiglierei di finire la tua query con ;

    Invece, per gestire l'apostrofo, dovresti sostituire "'" con "''" (doppio apostrofo) usando la funzione PHP str_replace().

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    410
    sincermente non so che versione di php ho sul server..dovrei cercare un po.
    non ho capito bene l utilità del doppio apice e come dovrei usarlo ti puoi spiegare meglio?

  10. #10
    Supponi di avere questa query:

    $user = $_POST['user'];
    $sql = "SELECT pwd FROM users WHERE user='$user'";

    Ma un utente scrive:
    '; DELETE FROM users WHERE 1 OR '

    Il valore di $sql diventerà:

    SELECT pwd FROM users WHERE user=''; DELETE FROM users WHERE 1 OR ''

    La prima query non trova niente.
    La seconda ha una where che è sempre vera (grazie a 1) e quindi cancella tutte le righe di users.
    Si chiama SQL injection: nella tua SELECT è stata "iniettata" una pericolosissima DELETE!

    Ma se sostituisci ' con '' diventa:

    SELECT pwd FROM users WHERE user='''; DELETE FROM users WHERE 1 OR '''

    che non trova niente ma è innocua.

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.