This is a machine translation. The original page (in English) is available here.

Ultime notizie dal mondo: - Perché gli USA stanno valutando TikTok Ban Feed RSS

Casa>Notizie dal mondo>Dichiarare Guerra ad Attacchi di tipo SQL Injection
Top Registratore di tasti
Vedi di più...

Dichiarare Guerra ad Attacchi di tipo SQL Injection

  •  
Valutazione degli utenti: nessuna recensione. Siate i primi a scrivere una recensione di esso! 0 - 1 voti
Dovremmo aver sradicato attacchi di tipo SQL injection da ora. SQL injection dovrebbe essere la generazione di Internet è polio vaiolo o -- andati bene. Contromisure sono prontamente disponibili e comprensibili. Sono facili da implementare. Eppure, continuo a vedere titoli come "Enorme Web hack attack infetta 500.000 pagine."

Attacchi di SQL injection continuano ad essere tra i più fecondi contro i siti Web e le applicazioni. E perché no? Da un punto di vista dell'attacker, il database alla base di molte applicazioni Web veramente succosa obiettivi di vivere. Ecco dove potrete trovare i record dei clienti, numeri di carte di credito e altre cose buone.

E ora gli aggressori hanno iniziato utilizzando SQL injection per impianto di malware su siti Web, in modo che i visitatori di questi siti ottenere il loro computer infettati con il malware. Il database non sono solo di dove il succoso obiettivi sono; sono pronti per la semina dati dannosi che infetta il computer di altre persone.

Questo alza la posta in gioco e rende ancora più avvincente argomento per sradicare ogni singolo SQL injection difetto esistenza. Dobbiamo garantire che nessun futuro applicazioni SQL injection difetti. Diamo un'occhiata più da vicino per vedere che cosa è coinvolto.

SQL, o Structured Query Language, è un interpretata linguaggio di database che viene comunemente utilizzato dal server di applicazioni a parlare di server di database. Il database in cui, come ho detto, abbiamo conservare le cose come i record dei clienti. Un record che potrebbe essere costituito da un nome del cliente, indirizzo, e-mail, numero di telefono, carta di credito e informazioni di pagamento.

Come Funziona

Per visualizzare un cliente di dati in un database, una query SQL è costruito in applicazione server e il database, che dovrebbe restituire le informazioni del cliente e niente di più. La query potrebbe essere qualcosa come:

select * from clienti where cognome='Rossi'
Così che cosa è il grosso problema? Beh, in applicazione server, il nome del cliente è generalmente rappresentato come una variabile con un valore che entra applicazione, tramite un modulo Web -- con i dati che deriva dall'applicazione dell'utente. Così, in Java, la query potrebbe essere costruito qualcosa di simile al seguente:

String query = "Select * from clienti where cognome='" + req.getParameter("cognome") + "'";
Vedi il problema di sicurezza? Beh, nel normale funzionali caso, un utente entra in un ultimo nome, ad esempio "Smith" in quel campo, ma un utente malintenzionato potrebbe facilmente inserire un valore di "' o '1'='1'-". Che sarebbe il risultato di una query come la seguente di essere inviati al server:

select * from clienti where cognome=" or '1'='1'
Che espressione Booleana (cognome=" or '1'='1') sta andando sempre essere vero, che determinerà il database server risponde con l'intero contenuto del cliente i dati della tabella. Che è, il nostro attaccante ha probabilmente solo riuscito a estrarre i dati dei clienti di tutti i nostri clienti. Non buona.

Ma io ho detto il problema è facile da risolvere. Vedi, il problema di fondo nello scenario di cui sopra, è che l'intento della logica SQL può essere modificata maliziosamente da formato dati utente. Ma Java e la maggior parte dei Web-lingue affini ci forniscono una soluzione semplice chiamata query con parametri.

In una query con parametri, i dati vengono passati alla query SQL come dati reali, e non come parte della sintassi SQL stessa. Ci vuole solo un po ' più di sforzo per impostare la query, ma poi il gioco è fatto, e i dati forniti da un utente malintenzionato, non fa nulla per modificare l'intento della nostra query.

Come Risolvere il problema

Ecco cosa nostra query di cui sopra sarebbe se abbiamo usato Java query con parametri meccanismo, noto come prepared statement:

String lastName = req.getParameter("cognome"); String query = "Select * from clienti where cognome = ?" PreparedStatement pstmt = connessione.prepareStatement( query ); pstmt.setString(1, cognome ); try { ResultSet risultati = pstmt.execute( ); }
OK, quindi è un altro paio di righe di codice, ma è un semplice modello da seguire. E i risultati sono identici ai vulnerabili forma-ma senza la vulnerabilità.

Se ci limitiamo a passare attraverso le nostre applicazioni Web e modificare tutte le nostre query SQL in forma di una dichiarazione preparata, si può completamente cancellare ogni singolo SQL injection debolezza in tutto il mondo. Seriamente.

Ci saranno ancora un sacco di altre questioni da affrontare, come il cross-site scripting (noto anche come "XSS"), ma ci hanno eliminato questo problema di SQL injection interamente.

Vorrei sapere cosa si deve pensare: non può essere così facile, altrimenti avremmo fatto fuori con la SQL injection anni fa. Sarebbe vero solo in parte. A livello tecnico, è così semplice. Ma a livello umano, non così tanto.

Per risolvere il problema di SQL injection, diversi pre-condizioni esistenti. Uno, abbiamo bisogno di avere accesso al codice sorgente dell'applicazione stessa. Se la nostra applicazione è stato in outsourcing, o se stiamo contando sul codice di terze parti, questo potrebbe non essere una cosa così semplice a tutti.

E questo è solo uno degli umani ostacoli che ho sentito come scuse per non correggere una protezione difetto. Ci sono molti altri.

Ma dai, gente, ci meritiamo di meglio lo status quo. La nostra società si meritano qualcosa di meglio; i nostri utenti meritano di meglio; infatti, i nostri clienti meritano il meglio. Smettere di fare scuse e iniziare a fare le ragioni. Ne fanno una meta per passare attraverso le applicazioni Web ora e sradicare ogni singolo SQL injection debolezza. E mentre ci sei, essere sicuri di insegnare ogni uno dei vostri sviluppatori di software come fare sicuro chiamate SQL.

Non più di SQL injection. Non ci sono più scuse.
Data di pubblicazione:
Autore:
Casa>Notizie dal mondo>Dichiarare Guerra ad Attacchi di tipo SQL Injection
IMPORTANTE! Computer di installazione di strumenti di monitoraggio sui computer che non possiedono o non hai il permesso di monitorare può violare locali, statali o federali.