Alcune note
Un attacco di SQL injection è quando qualcosa di inaspettato viene inserito in un database. I tipi di iniezioni dipendono dalle vulnerabilità del sistema.
Iniezione query SQL
Se il database non dispone di autorizzazioni appropriate, il che significa che l'utente Web ha il pieno controllo sul database, quindi possono potenzialmente fare cose come sostituire tutti i record, rilasciare tabelle e aggiungere le proprie tabelle.
Un esempio potrebbe essere un'iniezione su una modifica in cui il sito si aspetta che l'utente modifichi il proprio record, ma invece aggiorna tutto nel server.
\' or where 1=1;
Se hanno accesso in sola lettura al database, potrebbero aumentare i loro privilegi e ottenere più informazioni di quelle che dovrebbero. Questo esempio si troverebbe su un server che restituisce due record, quindi l'utente aggiunge la tabella dell'utente come risultato.
\' UNION ALL SELECT username,password from USERS;
Iniezione PHP
Molte delle funzionalità delle ultime versioni di PHP sono state risolte per risolvere problemi di esecuzione del codice, tuttavia alcuni sviluppatori usano cose come exec()
per eseguire azioni sul codice estratto da un database. Alcune versioni precedenti di PHP sono ancora vulnerabili agli attacchi.
Gli sviluppatori sono la prima linea per la difesa quando si tratta di scrivere un sito web. Supponiamo che tu abbia un CMS aziendale e che gli sviluppatori abbiano creato una tabella modificabile dall'utente nel CMS per modificare qualcosa come annunci display.
L'utente malintenzionato potrebbe inserire phpinfo();
e visualizzare tutto il database sul server, o eseguire codici a riga di comando (in base all'accesso dell'account utente del sito Web sul server Web) o aggiungere la propria backdoor al sito ( scrivere o riscrivere i file). Ciò potrebbe consentire all'utente di reindirizzare completamente tutto il traffico fuori dal sito.
Iniezione script
Sebbene il PHP del sito possa essere meno vulnerabile a un attacco, un utente può ancora iniettare cose come iframe contenenti codice dannoso, javascript con codice dannoso o applet JAVA che consentono loro di rubare i cookie degli utenti. Poiché javascript può eseguire AJAX e inviare richieste a un server web diverso senza preavviso, questo probabilmente non verrà visualizzato nell'interfaccia anche se potrebbe accadere.
<script type='text/javascript'>
window.location('http://someotherwebsite.com');
</script>
Test
Le implicazioni legali per il test sulla scatola di qualcun altro sono diverse a seconda del paese in cui ti trovi e del paese in cui è ospitato il server. Detto questo, ci sono molte versioni gratuite di sistemi operativi come FreeBSD e vari tipi di Linux (alcuni più sicuri di altri) in cui è possibile installare un sistema operativo, un server Web e un server MySQL su un Virtual Fai la macchina sotto qualcosa di simile a Virtual Box e vai in città senza perdere tempo con la tua macchina di produzione.
Anche alcune delle altre risposte fornite da altri poster sono eccellenti in questo thread.