Vamos a ver, estoy desarollando una aplicación y hay una variable GET que la uso para usa consulta SQL.
http://www.todojuegos.com/pcontrol/?accion=changever
&idcli=1Siempre limpio las variables antes de meterlas en las sentencias, pero me pasa una cosa muy rara.
Si pongo por ejemplo:
&idcli=
1 // Y existe me dice que todo ok
&idcli=
1211 // Error: No existe o no pertenece
Ataques:
&idcli=
"> // Error: No existe o no pertenece
&idcli=
'OR // Error: No existe o no pertenece
&idcli=
% // AQUÍ LO RARO
Al poner % me sale:Citar
Error 403
Forbidden
You don't have permission to access /pcontrol/ on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Apache/1.3.41 Server at www.todojuegos.com Port 80
Y no me mola no poder controlar ese error.
Para limpiar la variable en una sentencia SQL uso este:
mysql_real_escape_string($idcli)
Gracias :-)
Podrías usar una función como esta, que limpiaría de la cadena cualquier caracter que no sea alfanumérico, evitando ese problema:
function alfanumeric($string){
$string=ereg_replace("[^A-Za-z0-9]", "", $string);
return $string;
}
El problema de eso es que haber si va a eliminar algo que no 'deba'.
Aunque muchos son numéricos (y en ocasiones fueron con un INT para que no me pase nada), quizás necesite poner por ejemplo un email y ya no funcionaría.
También me gustaría entender el error ¿Por qué sucede?.
Si tienes el mod_security para Apache es muy probable que sea eso.
Cita de: madpitbull_99 en 2 Julio 2011, 18:04 PM
Si tienes el mod_security para Apache es muy probable que sea eso.
Estoy haciendo las pruebas en un hosting 'del palo' ¿Hay alguna forma de saberlo? Tiene cPanel.
PD: Gracias.
En la información de phpinfo() creo que debería salir.
Cita de: dimitrix en 2 Julio 2011, 17:29 PM
El problema de eso es que haber si va a eliminar algo que no 'deba'.
Aunque muchos son numéricos (y en ocasiones fueron con un INT para que no me pase nada), quizás necesite poner por ejemplo un email y ya no funcionaría.
También me gustaría entender el error ¿Por qué sucede?.
Si quieres que acepte emails es tan fácil como hacer la función así:
function alfanumeric($string){
$string=ereg_replace("[^A-Za-z0-9@._]", "", $string);
return $string;
}
Me parece que te estás complicando más de la cuenta, para un error que puede tener una solución extremadamente fácil.