Estoy desarrollando un sitio web y estoy intentando asegurar la parte de la conexión.Proteger contra inyección de SQL
Utilicé la función addslashes
en $login
para detener la inyección de SQL pero algunos amigos me dijeron que no había suficiente seguridad. Sin embargo, no me mostraron cómo aprovechar esta vulnerabilidad.
¿Cómo puedo/puedo romper este código? ¿Cómo puedo protegerlo?
<?php
if (isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])))
{
extract($_POST);
$sql = "SELECT pseudo, sex, city, pwd FROM auth WHERE pseudo = '".addslashes($login)."'";
$req = mysql_query($sql) or die('Erreur SQL');
if (mysql_num_rows($req) > 0)
{
$data = mysql_fetch_assoc($req);
if ($password == $data['pwd'])
{
$loginOK = true;
}
}
}
?>
Google addslashes VS mysql_real_escape_string: http://www.sitepoint.com/forums/showthread.php?t=337881 –
Hay muchos tutoriales desactualizados que sugieren 'addslashes()' como un mecanismo para escapar cosas en Consultas SQL. Si está aprendiendo de uno de esos, le sugiero que intente encontrar algo más actualizado y preciso. Además, 'extract ($ _ POST)' es un buen ejemplo de vulnerabilidad; no lo hagas! Por cierto, bienvenido a StackOverflow. –
duplicado casi exacto de http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php – Puddingfox