Una domanda per principianti qui.
Ho appena letto una breve introduzione all'iniezione SQL su link
Si dice di trovare un percorso di richiesta GET sull'applicazione PHP per vedere se è vulnerabile o meno.
Ho un sito web con il seguente URL di query.
http://example.com/get_stuff?query=hello&limit=50&offset=0
Sto utilizzando una query non elaborata, quindi, in base al sito, presumo che il mio sito Web sia vulnerabile all'iniezione SQL.
Per provarlo, ci provo.
http://example.com/get_stuff?query=hello&limit=50'&offset=0
(aggiungendo una virgoletta singola dopo il limite = 50)
Questo errore viene stampato - come previsto e come suggerito dal sito Web - il che significa che la mia query è vulnerabile.
Ora, per proteggerlo, voglio assicurarmi di "sfuggire" alle virgolette nelle mie domande. Sto usando un framework PHP chiamato CodeIgniter, in cui esiste una funzione chiamata $this->db->escape()
.
Quindi uso questa funzione "escape" sul valore 50, ma ora restituisce un errore dicendo che "50" non è un numero intero valido.
Giusto, la condizione "LIMIT" dovrebbe ricevere solo un valore intero.
Ma la mia domanda è: la mia query ora è "SQL-injection" sicura?