
Bueno ultimamente he estado en muchos sitios que son vulnerables a este tipo de ataques, si bien PHP no permite ejecutar varias queries en un mysql_query, si es un SELECT se pueden sacar muchos datos, entre ellos el nombre de usuario y password del admin, si es un login, podes facilmente logear como administrador, si es un INSERT o UPDATE tambien se pueden hacer muchas cosas, en fin... Si te estas preguntando que es SQL Injection, imaginate este sitio
sitio.com/?page=1
eso podria ser algo en php, como
$id = $_GET['id'];
$q = mysql_query("SELECT * FROM tabla WHERE `id`='$id'");
$r = mysql_fetch_array($q);
echo $r['contenido'];
Ahora que pasa si como pagina yo pongo
sitio.com/?page=1'; DROP TABLE 'tabla'; --
Asi es, la query ahora es
"SELECT * FROM tabla WHERE `id`='1'; DROP TABLE 'tabla'; -- '"
Como decia, PHP no permite hacer esto, dos queries en un mysql_query, pero otros lenguajes si, o quizas algun descuido, quien sabe, pero si hay formas que se puede llegar a ejecutar eso, y si es un login?
"SELECT * FROM users WHERE `user`='user' AND `pass`='pass'"
Se convertiria en
"SELECT * FROM users WHERE `user`='user' -- 'AND...."
Eso es, entrar como el usuario que desees, el admin es el mas vulnerable, en fin, casi todos los sitios usan bases de datos, y PHP + Mysql es muy comun, asi que mucho cuidado con eso! Ahora mostrare como cuidarte de esto en PHP, simplemente llama esta funcion en index o donde incluyas las demas paginas, si no usas ese sistema, siempre en donde ejecutes alguna query
function clean()
{
foreach($_POST as $key => $val)
{
$_POST[$key] = stripslashes(strip_tags(htmlspecialchars($val, ENT_QUOTES)));
$$key = stripslashes(strip_tags(htmlspecialchars($val, ENT_QUOTES)));
}
foreach($_GET as $key => $val)
{
$_GET[$key] = stripslashes(strip_tags(htmlspecialchars($val, ENT_QUOTES)));
$$key = stripslashes(strip_tags(htmlspecialchars($val, ENT_QUOTES)));
}
foreach($_COOKIE as $key => $val)
{
$_COOKIE[$key] = stripslashes(strip_tags(htmlspecialchars($val, ENT_QUOTES)));
$$key = stripslashes(strip_tags(htmlspecialchars($val, ENT_QUOTES)));
}
}
Enjoy!
0 comentarios:
Publicar un comentario