Il miglior tutorial iniezione MySQL e SQL Nel 2024, in questo tutorial puoi imparare iniezione Prevenire SQL,Come iniezione dichiarazione,
Se si ottiene i dati inseriti dall'utente tramite il web e inserirlo in un database MySQL, allora è possibile i problemi di sicurezza di iniezione SQL.
In questa sezione vi dirà come prevenire SQL injection, e per filtrare i caratteri di iniezione SQL in uno script.
La cosiddetta SQL injection, è attraverso il comando SQL nel modulo Web presentare o immettere il nome di dominio o richiesta di pagina stringa di query, e in ultima analisi ingannare server per eseguire i comandi SQL dannosi.
Abbiamo l'input dell'utente mai fiducia, dobbiamo identificare i dati inseriti dall'utente sono insicuri, tutti abbiamo bisogno per il processo di filtraggio dei dati di input dell'utente.
L'esempio che segue, il nome utente immesso deve essere una combinazione di lettere, numeri e caratteri di sottolineatura, e la lunghezza del nome utente è compresa tra 8-20 caratteri:
if (preg_match("/^\w{8,20}$/", $_GET['username'], $matches)) { $result = mysql_query("SELECT * FROM users WHERE username=$matches[0]"); } else { echo "username 输入异常"; }
Diamo un'occhiata alla situazione in cui non vi è alcun filtro SQL appaiono caratteri speciali:
// 设定$name 中插入了我们不需要的SQL语句 $name = "Qadir'; DELETE FROM users;"; mysql_query("SELECT * FROM users WHERE name='{$name}'");
Sopra dichiarazione di iniezione, non abbiamo filtrare il nome variabile $, $ name non abbiamo bisogno di inserire l'istruzione SQL cancellerà tutti i dati degli utenti della tabella.
mysql_query in PHP () non è consentito di eseguire più istruzioni SQL, ma in SQLite e PostgreSQL in grado di eseguire più istruzioni SQL contemporaneamente, così gli utenti di questi dati abbiamo bisogno di verifica rigorosa.
Prevenire SQL injection, dobbiamo prestare attenzione ai seguenti punti:
In linguaggi di scripting come Perl e PHP si può sfuggire i dati inseriti dall'utente al fine di prevenire SQL injection.
estensione PHP MySQL fornisce la funzione mysql_real_escape_string () per sfuggire caratteri di input speciali.
if (get_magic_quotes_gpc()) { $name = stripslashes($name); } $name = mysql_real_escape_string($name); mysql_query("SELECT * FROM users WHERE name='{$name}'");
come la query, se l'utente inserisce un valore "_" e "%", allora questo accade: L'utente è stato solo cercando query "abcd_", i risultati delle query là "abcd _", "ABCDE", "abcdf" ecc; all'utente di interrogare il "30%" (Nota: il trenta per cento) avranno problemi.
Nello script PHP, possiamo usare addcslashes () per gestire il caso di cui sopra, i seguenti esempi:
$sub = addcslashes(mysql_real_escape_string("%something_"), "%_"); // $sub == \%something\_ mysql_query("SELECT * FROM messages WHERE subject LIKE '{$sub}%'");
addcslashes () prima specificati con un backslash.
sintassi:
addcslashes(string,characters)
parametri | descrizione |
---|---|
stringa | Richiesto. Per controllare la stringa specificata. |
personaggi | Opzionale. Prescritto dal addcslashes () influenzare caratteri o intervalli di caratteri. |
È possibile visualizzare l'applicazione specifica: le addcslashes PHP () funzione