2010-11-13 12 views
7

Nel Manuale PHP, c'è una nota:mysql_real_escape_string è sufficiente per l'Injection SQL?

Nota: Se questa funzione non viene utilizzata per i dati di fuga, la query è vulnerabile agli attacchi SQL Injection.

È sufficiente l'iniezione di sql? In caso negativo, potresti fornire un esempio e una buona soluzione per l'iniezione di sql anti?

+1

Vedere [Does mysql_real_escape_string() FULLY protegge dall'iniezione SQL? ] (http://stackoverflow.com/questions/1220182/does-mysql-real-escape-string-fully-protect-against-sql-injection). –

+0

sicuramente un duplicato di sopra – mikeycgto

risposta

6

mysql_real_escape_string di solito è sufficiente per evitare l'iniezione SQL. Ciò dipende dal fatto che sia privo di bug, ad esempio, c'è una piccola possibilità sconosciuta che sia vulnerabile (ma questo non si è ancora manifestato nel mondo reale). Un'alternativa migliore che esclude completamente le iniezioni SQL a livello concettuale è prepared statements. Entrambi i metodi dipendono interamente dalla tua applicazione corretta; non ti proteggerò nemmeno se lo rovini comunque.

+1

solo per chiarire: c'è anche una possibilità che PDO emuli query preparate (per mysql) e non usi quelle native mysql. Non esiste una tale dichiarazione nella documentazione di php (o non posso trovarne una). – zerkms

+0

"Il PDO emulerà per i driver che non li supportano" --- non è sufficiente, perché: a) installato (vecchio) libmysql non può supportare preparato; b) DOP non può ancora utilizzare istruzioni preparate in modo nativo. – zerkms

0

Per quanto ne so questo è un modo efficace per evitare gli attacchi SQL Injection.

+0

Mi dispiace, ho dimenticato di aggiungere, che penso che tu possa attaccare da un URL. – mcbeav

+0

Puoi anche, limitare sempre chi può accedere a cosa sul tuo database e chi ha quali privilegi. – mcbeav

0

La soluzione migliore è PDO.

Se si utilizza il tradizionale mysql_query, è sufficiente eseguire tutti i dati tramite mysql_real_escape_string().

+0

Cosa sono le query parametrizzate? – Jichao

+0

Le query parametrizzate sono disponibili anche nelle estensioni 'PDO ' – stillstanding

Problemi correlati