Inyecion SQL y HTML
-
Si el dato que quieres validar es una cadena:
mysql_real_escape_string($dato);
Si, por el contrario, es un numero:
$dato = (is_numeric($dato) ? $dato : 0);
//en lugar de 0 se puede poner cualquier cosaCon eso ya es completamente seguro lo que quieras meter en una consulta SQL. En mi opinión solo se debe reinventar la rueda para aprender cómo está hecha la rueda, o si la rueda necesita mejorarse. Sin embargo en php ya existe una función preciosa para evitar inyecciones SQL y no veo realmente por qué no usarla...
-
@Hawkings said:
Si el dato que quieres validar es una cadena:
mysql_real_escape_string($dato);
Si, por el contrario, es un numero:
$dato = (is_numeric($dato) ? $dato : 0);
//en lugar de 0 se puede poner cualquier cosaCon eso ya es completamente seguro lo que quieras meter en una consulta SQL. En mi opinión solo se debe reinventar la rueda para aprender cómo está hecha la rueda, o si la rueda necesita mejorarse. Sin embargo en ohp ya existe una función preciosa para evitar inyecciones SQL y no veo realmente por qué no usarla...
Por que si dejas meter html, te pueden meter un meta para redireccionar >.<
-
Pues eso, que andamos en lo mismo.
Una vez obtenido el dato que quieras de la mysql, pasalo por la funcion htmlspecialchars() antes de hacer un echo del dato obtenido
while($row = mysql_fetch_assoc($query)){
echo htmlspecialchars($row['mensaje']);
} -
Tambien otra forma de filtrar es usando dichas funciones, tales como Htmlspecialchars, mysql_real_escape_string.
Sería de la siguiente manera para filtrar los textos.
function FiltrarTexto($str, $advanced=false) { if($advanced == true){ return mysql_real_escape_string($str); } $str = mysql_real_escape_string(htmlspecialchars($str)); return $str; }
Saludos.
-
@Rimander said:
@jumarras said:
por lo que se, es mas seguro usar mysql_real_escape_string() para filtar los datos obtenidos desde un formulario.
Eso pense yo...
Pero si te meten html con metas?mysql_real_escape_string() convierte todos los datos en carateres especificos pasando todo tipo de datos a la consulta sin causar errores.
-
@*STAR* said:
@Rimander said:
@jumarras said:
por lo que se, es mas seguro usar mysql_real_escape_string() para filtar los datos obtenidos desde un formulario.
Eso pense yo...
Pero si te meten html con metas?mysql_real_escape_string() convierte todos los datos en carateres especificos pasando todo tipo de datos a la consulta sin causar errores.
Si, si tienes tiempo verifica las demás versiones de php.
a partir de la 5 funciona muy bien la función pero anteriormente permitía algunos caracteres.
En mi anterior hosting tenia problemas con esa función.