vuelvo, para compartir el modo en que efrenté el problema, ojalá me den su opinión al respecto:
Con este código evito que escriban un string en una variable que deseamos sea de tipo integer y esten relacionadas a un campo de una tabla, por ejemplo para las páginas del frontend cuya url sea del tipo: midominio.com?id=5 que suelen pasar consultas sobre esa id para llegar hasta la tabla de los administradores y hacerse con el nombre de usuario y contraseña
Código PHP:
Ver original{
{
echo " <script type=\"text/javascript\">
alert('Usted intenta violar la seguridad de este sitio.');
</script>";
// por si desactivan javascript redireccionamos con un meta...
echo "<meta http-equiv='refresh' content='0;url=http://www.google.com'>";
return false;
}
}
Luego para evitar que ingresen caracteres extraños en los formularios, por ejemplo en el formulario de logueo:
Código PHP:
Ver original// Modificamos las variables pasadas por URL
foreach( $_GET as $variable => $valor ){
$_GET [ $variable ] = str_replace ( "'" , "" , $_GET [ $variable ]); $_GET [ $variable ] = str_replace ( "\"" , "" , $_GET [ $variable ]); $_GET [ $variable ] = str_replace ( "=" , "" , $_GET [ $variable ]); $_GET [ $variable ] = str_replace ( "(" , "" , $_GET [ $variable ]); $_GET [ $variable ] = str_replace ( ")" , "" , $_GET [ $variable ]); $_GET [ $variable ] = str_replace ( ";" , "" , $_GET [ $variable ]); $_GET [ $variable ] = str_replace ( "." , "" , $_GET [ $variable ]); $_GET [ $variable ] = str_replace ( ":" , "" , $_GET [ $variable ]); $_GET [ $variable ] = str_replace ( "&", "" , $_GET [ $variable ]); $_GET [ $variable ] = str_replace ( "#", "" , $_GET [ $variable ]); $_GET [ $variable ] = str_replace ( "/", "" , $_GET [ $variable ]); $_GET [ $variable ] = str_replace ( "?", "" , $_GET [ $variable ]); }
// Modificamos las variables de formularios
foreach( $_POST as $variable => $valor ){
$_POST [ $variable ] = str_replace ( "'", "" , $_POST [ $variable ]); $_POST [ $variable ] = str_replace ( "\"", "" , $_POST [ $variable ]); $_POST [ $variable ] = str_replace ( "=", "" , $_POST [ $variable ]); $_POST [ $variable ] = str_replace ( "(", "" , $_POST [ $variable ]); $_POST [ $variable ] = str_replace ( ")", "" , $_POST [ $variable ]); $_POST [ $variable ] = str_replace ( ";", "" , $_POST [ $variable ]); $_POST [ $variable ] = str_replace ( ".", "" , $_POST [ $variable ]); $_POST [ $variable ] = str_replace ( ":", "" , $_POST [ $variable ]); $_POST [ $variable ] = str_replace ( "&", "" , $_POST [ $variable ]); $_POST [ $variable ] = str_replace ( "#", "" , $_POST [ $variable ]); $_POST [ $variable ] = str_replace ( "/", "" , $_POST [ $variable ]); $_POST [ $variable ] = str_replace ( "?", "" , $_POST [ $variable ]); }
Finalmente, encripto en md5 el campo destinado al password de la tabla de administradores. y uso una cadena de más de 10 dígitos que incluye minúsculas, mayúsculas y números.
En las páginas internas del backend, en absolutamente todas valido la sesión del usuario logueado y en caso de retornar falso redirecciono.
¿que les parece? ¿encuentran algún hueco para mejorar?
Saludos.