Dimostrare l'iniezione SQL utilizzando il codice QR

3

Ho trovato un modo di inserire un'iniezione SQL attraverso una query non sicura. Il programma è un controllo del punto di controllo che funziona con i codici QR. Controlla se il tuo codice esiste in un database e se è il caso di entrare nella struttura.

Ora ... poiché questo è l'unico input da persone non dipendenti, le misure contro le iniezioni SQL non vengono prese nel codice. Ora, se prendo un codice QR "infetto" da inserire nel sistema, sono sicuro che farà credere loro la minaccia ... come utilizzeresti questo? (SQLite)

"SELECT count(*) FROM validation WHERE qrstring='" + qrcodestring + "'"

Ho trovato un paio ma niente di importante come ottenere codici validi da altri utenti o qualcosa del genere ...

Inoltre, la mia paura è logica o è sicura? Perché mi sono divertito a esporre questo.

    
posta wannabeLearner 01.09.2016 - 10:59
fonte

2 risposte

1

Also, is my fear logical, or is this safe?

Questo non è sicuro. Le informazioni possono essere estratte, ad esempio tramite iniezione cieca .

E la tua paura è logica. Non ci sono buone ragioni per non avere difese contro SQL Injection .

Sul lato pro hai:

  • non tutte le persone dello staff dovrebbero sempre avere il controllo completo del database. Forse questo non è il caso adesso, ma potrebbe essere in futuro.
  • L'input dell'utente può ancora raggiungere l'applicazione se ci sono altre vulnerabilità. CSRF sarebbe uno dei più probabili, ma se questo è accessibile dall'esterno, i problemi di autenticazione potrebbero causare problemi.
  • I tuoi requisiti potrebbero cambiare. Forse alcuni degli input attualmente controllati dallo staff devono essere controllati dall'utente. Ora cosa? Devi cambiare il codice esistente e sperare di non dimenticare alcuni posti.
  • se il tuo codice trapelasse, questo potrebbe portare a danni alla reputazione delle società, in quanto è generalmente accettato che la codifica non protetta non sia accettabile.
  • in questo caso, l'input è effettivamente controllato dall'utente. Non è una cosa da prendere in giro, questo potrebbe essere un serio problema di sicurezza.

E non ci sono contro. Le istruzioni preparate sono facili da scrivere e risultano migliori, più facili da leggere e più facili da gestire.

Originariamente ho votato per chiudere come duplicato, ma dopo aver riletto la tua domanda ho deciso di rispondere comunque, poiché la domanda non sembra essere solo su come sfruttare questo, ma anche se le difese contro l'iniezione sql sono necessario a tutti

    
risposta data 01.09.2016 - 16:08
fonte
2

Ho trovato la risposta che stavo cercando, anche se non c'è modo (che io sappia) di visualizzare altri codici perché non presenterò le informazioni del database in alcun modo. è ancora possibile bypassare la verifica di sicurezza utilizzando un semplice ' or ''=' . La mia soluzione per questo era l'aggiunta di livelli di complessità al tipo di codici accettati dal mio programma, ad esempio, sto usando un GUID e so che ha 36 caratteri su hash di lunghezza 3 (-) ... e un codice che non presenta questo le caratteristiche non sono affatto in grado di interagire con il database.

Controlla questo fantastico risposte per ulteriori informazioni sull'argomento.

    
risposta data 01.09.2016 - 12:53
fonte

Leggi altre domande sui tag