Duplicar posibles:
Best way to prevent SQL injection in PHP?SQL Injection Protección - comillas simples
he estado haciendo un poco de pruebas para proteger a mis sitios de la inyección de SQL. Veo que hay un par de maneras de hacerlo, escapando de mis entradas de usuario, agregando barras, o mejor aún usando declaraciones SQL parametrizadas.
Tenía este código de prueba ..
$q=$_GET["q"];
$game = mysql_query("SELECT * FROM `Games` WHERE `id` = '$q'");
$game = mysql_fetch_array($game);
echo "<h4>ID: ".$game[0]."<br /></h4>name: " . $game[1];
Y he intentado varias solicitudes SQLi y no pude conseguir mi página de prueba a error, o mostrar todos los datos adicionales.
Pero cuando he cambiado de código SQL para esto (Eliminado las comillas simples alrededor de $ q) ..
$game = mysql_query("SELECT * FROM `Games` WHERE `id` = $q");
pude realizar de SQLi simples y obtener algunos resultados.
¿Tan solo está envolviendo mis entradas de usuario en comillas simples lo suficientemente buenas? ¿O he visto más complejas técnicas de SQLi?
Use PDO con una declaración preparada. Esa es la opción más segura a partir de ahora en el año 2012. – itachi
compruebe si su servidor php tiene 'magic_quotes_gpc = ON' que ayudará a evitar la inyección de SQL – jcho360
Use declaraciones preparadas (mysqli o POD). Ahorra muchas molestias y mysql está en desuso. –