Significato query

di Anonimizzato19319 il
3 risposte
Ciao ragazzi, cosa significa esattamente questa query?

SELECT * FROM Tabella WHERE username='' or '1' = '1' AND password=''or '1' = '1'

in particolare non capisco i valori '' or '1' = '1'

3 Risposte

  • E' il classico attacco di SQL injection, in cui si sfrutta il fatto che chi ha scritto l'applicazione non ha previsto che l'utente possa inserire nei vari campi della form (in questo caso username e/o password) dei valori che possono essere eseguiti direttamente come SQL.
    Nel caso specifico, inserendo come username e/o password la stringa ' OR '1'='1 si bypassa il controllo di questi valori con quelli presenti nel DB, in quanto la clausola OR ha priorità minore rispetto all'AND (cioè viene eseguita dopo), e il confronto '1' = '1' restituisce sempre true.
  • Della ha scritto:


    E' il classico attacco di SQL injection, in cui si sfrutta il fatto che chi ha scritto l'applicazione non ha previsto che l'utente possa inserire nei vari campi della form (in questo caso username e/o password) dei valori che possono essere eseguiti direttamente come SQL.
    Nel caso specifico, inserendo come username e/o password la stringa ' OR '1'='1 si bypassa il controllo di questi valori con quelli presenti nel DB, in quanto la clausola OR ha priorità minore rispetto all'AND (cioè viene eseguita dopo), e il confronto '1' = '1' restituisce sempre true.
    Grazie mille per il chiarimento, se qualcuno fosse interessato a rendere piu sicuro il proprio sito sto leggendo queste slide https://www.owasp.org/images/f/ff/Parata_SMAU06.pd

    Buona giornata!
  • Secondo me il metodo più semplice e immediato è quello di usare i prepared statement. In PHP, ad esempio, puoi farlo tramite PDO
Devi accedere o registrarti per scrivere nel forum
3 risposte