So che SQL Injection può essere disinfettato usando
mysql_real_escape_string();
ma come sanificare SQL Injection Blind e in che modo è diverso dalla normale iniezione SQL.
So che SQL Injection può essere disinfettato usando
mysql_real_escape_string();
ma come sanificare SQL Injection Blind e in che modo è diverso dalla normale iniezione SQL.
L'iniezione SQL cieca e l'iniezione SQL "normale" sono entrambe iniezioni SQL, ovvero l'autore dell'attacco è in grado di modificare l'istruzione SQL inviata al database. L'unica differenza è che con un'iniezione SQL cieca l'autore dell'attacco non vede alcun risultato ovvio (ovvero i dati restituiti dal database) ma può solo dedurre dai tempi, dai messaggi di errore o da ciò che è accaduto nel database. Vedi OWASP per ulteriori informazioni.
Poiché la causa sia dell'iniezione SQL cieca che dell'iniezione SQL "normale" è la stessa cosa anche per la prevenzione, ovvero assicurarsi che l'autore dell'attacco non possa modificare l'SQL in modo malevolo. Il modo migliore per farlo è il binding dei parametri e non l'escape (cioè mysql_real_escape_string
). Per ulteriori informazioni su come farlo correttamente, consulta Bobby Tables: una guida per prevenire l'iniezione SQL che descrive entrambi i problemi e ha anche soluzioni in vari lingue come per PHP .
Leggi altre domande sui tag sql-injection web-application