Ejemplo de inyección SQL (ejemplo clásico)
Consulta usada con php:
"SELECT * FROM tabla WHERE campo=$_POST[variable]"
Valor ingresado en el campo "variable":
'1'; DROP TABLE 'tabla'
Resultado:
SELECT * FROM tabla WHERE campo='1'; DROP TABLE 'tabla'
Es decir, gentilmente se elimina la tabla.
Hay 2 soluciones simples, una es usar
magic_quotes, que automáticamente filtra cualquier caracter "peligroso" (\, ', ", etc) agregándole una barra para escaparlo ( ' se transforma en \' ). El manual de PHP lo desaconseja, porque aumenta el procesamiento necesario y por tanto puede verse disminuido el rendimiento general.
La otra solución es la función
addslashes(), que tiene la misma función pero funciona solamente sobre las variables especificadas.
Saludos.