Llevo varios días leyendo sobre cómo evitar inyección sql en php y hay mucha información y cada cual hace lo que le parece aplicando lo que cree conveniente. Entre otras cosas esto:
- Filtrar con expresiones regulares.
- Filtrar palabras clave como AND, OR, WHERE, SELECT, DELETE, etc..
- Reemplazar caracteres del tipo ', ", *, ;, etc...
- Verificar la longitud de las variables.
- Utilizar Stored Procedure (no se porque es mas seguro...)
- Utilizar funciones del tipo addslashes().
- Limitar permisos del usuario en la base de datos.
Se que en Java, por ejemplo tenemos los PreparedStatement que supuestamente te evitan ese tipo de problemas y son bastante cómodos de utilizar.
También he visto en el foro esta función:
Código
<?php
function addslashes__recursive($var){
if (!is_array($var))
return addslashes($var);
$new_var = array();
foreach ($var as $k => $v)$new_var[addslashes($k)]=addslashes__recursive($v);
return $new_var;
}
$_POST=addslashes__recursive($_POST);
$_GET=addslashes__recursive($_GET);
$_REQUEST=addslashes__recursive($_REQUEST);
$_SERVER=addslashes__recursive($_SERVER);
$_COOKIE=addslashes__recursive($_COOKIE);
?>
http://foro.elhacker.net/php/pequenos_trucos_en_php-t152467.0.html
Después de haber visto tantas cosas no tengo nada claro que proceso seguir. ¿Vosotros cómo hacéis? ¿Tenéis una formula mágica
100% segura?









Autor



En línea











