Mysql
 sql >> Database >  >> RDS >> Mysql

Devo proteggermi dall'iniezione di SQL se ho usato un menu a discesa?

Sì, devi proteggerti da questo.

Lascia che ti mostri perché, utilizzando la console per sviluppatori di Firefox:

Se non pulisci questi dati, il tuo database verrà distrutto. (Questa potrebbe non essere un'istruzione SQL del tutto valida, ma spero di aver chiarito il mio punto.)

Solo perché hai limitato le opzioni disponibili nel menu a discesa non significa hai limitato i dati che posso inviare al tuo server.

Se hai provato a limitare ulteriormente questo comportamento utilizzando la tua pagina, le mie opzioni includono la disabilitazione di tale comportamento o semplicemente la scrittura di una richiesta HTTP personalizzata sul tuo server che imita comunque l'invio di questo modulo. Esiste uno strumento chiamato curl usato esattamente per questo, e io penso il comando per inviare comunque questa SQL injection sarebbe simile a questo:

curl --data "size=%27%29%3B%20DROP%20TABLE%20*%3B%20--"  http://www.example.com/profile/save

(Questo potrebbe non essere un comando curl del tutto valido, ma ancora una volta, spero di aver chiarito il mio punto.)

Quindi, ribadisco:

Non fidarti MAI dell'input dell'utente. Proteggiti SEMPRE.

Non dare per scontato che l'input dell'utente sia mai sicuro. È potenzialmente pericoloso anche se arriva attraverso mezzi diversi da un modulo. Niente di tutto ciò è mai abbastanza affidabile da rinunciare a proteggerti dall'iniezione SQL.