Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> PHP /MySQL Programmazione >> .

MySQL Iniezione Tutorial

MySQL iniezione è atto di inserire dichiarazione MySQL in un database senza la conoscenza del proprietario del database . In genere è fatto sfruttando i campi di input dell'utente che non sono protetti adeguatamente . Invece di fornire reale di ingresso che il proprietario del database ha chiesto , l'utente inserisce una dichiarazione MySQL che cambia il comportamento della query per dare la possibilità all'utente di iniettare per manipolare il database . MySQL iniezioni

Il modo più semplice per capire e imparare ciò che MySQL iniezione doesis davvero a dare un'occhiata a un esempio . Uno dei modi più diffusi di utilizzare MySQLinjections è quello di bypassare i controlli d'accesso a siti web. Ecco un esempio di awebsite che utilizza il seguente modulo per autenticare l'utente :

Login: < ingresso type = nome " testo" = " username" > Lozinka : < /form >

dopo aver premuto invio dei dati immessi viene quindi inviato alla pagina di userlogin.php che riceve e gestisce attraverso una query sul database per controllare il livello di accesso utente è e se ha inserito il nome utente e la password corretti .

< ? $ username = $ _POST [ 'username' ] ; $ password = $ _POST [ 'password' ] ; $ query = "SELECT username, password FROM utenti WHERE username = ' $ username' e la password = ' $ password' " ; ? >

Questo tipo di modulo di login è aperta allo sfruttamento da attacchi di iniezione di MySQL . Per accedere al sito ogni utente può inserire il seguente codice: 'OR 1 = 1 - per il nome utente e ' OR 1 = 1 per la password

Query sarà ora simile a questa : $ query = "username SELECT. , password FROM utenti WHERE username = '' OR1 = 1 - ' e password = '' OR 1 = 1 " ;

Questa query selezionerà username e password da parte degli utenti , dove non esistono nomi utente o password ( '' parte) o se uno è uguale a uno. Come uno è uguale in tutti i casi una sicurezza del database è compromessa . Due trattini prima apostrofo sono stati aggiunti per rendere MySQL ignorare apostrofo che è ormai superfluo . Questo è solo un tipo di attacco con iniezione di MySQL . Un'altra variante di questo attacco è quello di GetAccess a più informazioni che all'utente è consentito .

Ora guarda un esempio in cui il proprietario del database utilizza seguente queryto ottenere i dati per la visualizzazione su account utente pagina info .

$ query = "SELECT * FROM utenti WHERE username = ' $ name' " ;

Se questo tipo di ricerca non è protetto utente malintenzionato è in grado di input'OR 1 = 1 - per bypassare verificare nome utente. $ query = "SELECT * FROM utenti WHERE username = '' OR 1 = 1 - '" , . Questa query ora non selezionare solo i dati degli utenti , ma i dati di tutti gli utenti nella tabella " utenti"


Protezione contro MySQL iniezioni

Ci sono molti modi per proteggere contro MySQL iniezioni . In realtà le iniezioni di MySQL sono minacce solo se lo sviluppatore ha ignorato la minaccia e non è riuscito a proteggere il suo codice . Il modo più semplice per proteggere le iniezioni in combinazione PHP e MySQL è quello di utilizzare la funzione PHP : " mysql_real_escape_string "

Tornando al primo esempio < $ username = $ _POST [ 'username' ] ; $ . . ? password = $ _POST [ 'password' ] ; $ query = "SELECT username, password FROM utenti WHERE username = ' $ username' e la password = ' $ password' " ; ? >

per proteggere da MySQL iniezioni usi diretti di input utente devono befiltered attraverso " mysql_real_escape_string " . Funzione " mysql_real_escape_string " sfuggirà tutte MySQL caratteri speciali eliminando la possibilità di modificare il comportamento della nostra query

< $ username = mysql_real_escape_string ( $ _POST [ 'username' ] ) . ? $ Password = mysql_real_escape_string ( $ _POST [ ,"'password' ] ) ; $ query = "SELECT username, password FROM utenti WHERE username = ' $ username' e la password = ' $ password' " ; ? >


 

Programmazione © www.354353.com