Evitar la edición manual de parámetros de la URL

Existe algún Script que evite que el usuario pueda modificar manualmente las variables enviadas por la URL?Por ejemplo, en una URL:...

La FAQ Evitar la edición manual de parámetros de la URL tiene

Pertenece a la categoría:
Pregunta
Existe algún Script que evite que el usuario pueda modificar manualmente las variables enviadas por la URL?

Por ejemplo, en una URL:


http://localhost/sitios/active/noticias/detalle.asp?Id=12


Hacer algo que, si el usuario en su navegador me cambia el numero del id, le redireccione hacia otra pagina con un mensaje de error.

Respuesta de Javier Serrano Herrero
Lo que haría yo es crear la página con 2 marcos, uno de 1 px y el otro del resto de la pantalla, así lo que se consigue es que no salgan los nombres de los archivos a los que accedes ni los parámetros que pasas por la URL.
Volver al árbol de categoríasVolver al árbol de categorías

Comentarios

Miguel Angel Alvarez

17/12/2002
Captar la edición de la URL creo que es completamente imposible, pero a mi se me ocurre otra forma de poner dificil que los visitantes lo puedan llevar a cabo, aparte de utilizando frames, como se ha comentado ya.

Se trata de hacer que tu página se navegue dentro de una ventana secundaria a la que le puedes eliminar los elementos que quieras, incluida la barra de direcciones, sin la cual, nadie podría editar la URL.

De todos modos, debes estar preparado para que cualquier persona pueda navegar editando la dirección a la que está accediendo y realizar tus páginas de modo que no se puedan quedar "colgadas" si se hace eso.

Magician

15/4/2003
Y si se agrega un segundo parámetro que contenga el primero semi encriptado de manera de que si se altera o edita alguno, la página destino al hacer la comparación respectiva entre parámetros pueda determinar si hubo cambio.

red riter

20/8/2003
Para tener la maxima seguridad prueba esto:

- Pasa la url como un parametro
- Codifica la url con md5.
- Luego crea una pagina principal, en la cual descodificaras (md5) la url que recibes y una vez decodificada redirecciona a la pagina en cuestion.

Pero esto es matar moscas a cañonazos, asi que para seguridad realiza tus proyectos con sesiones a nivel de servidor y ya esta.

un saludo

Alvaro

02/2/2004
Creo que a lo que se refiere nuestro amigo, es a que salga un error del tipo "esa página no existe, no cambies la url".

pongamos por ejemplo que la dirección es pag.php?var=12 o pag.htm?var=12, depende de si usas php o javascript.

Con javascript, yo lo utilizaría para que la página "pag.htm" coja la variable que se le pasa, y te mande a una página dependiendo de la variable que le pases.
Entonces, si la variable no existe, mandarle a la página de error.

Con php, yo teng en mi web una página con todo el formato, que incluye en el medio la página pagquepongaenlaurl.php mediante

<?
&pag = $var.".php";
include($pag);
?>

y pondría que antes de hacer el include, haga una comprobación de si existe la página mediante if (file_exists($pag)){ include($pag)
}
else {
       include("error.php")
}


Si no entendeis, algo, decidmelo por email.

Saludos. Álvaro [www.iespana.es/superweb14]

Versae

18/8/2004
A mi entender, lo mejor es pasar ese dato mediante el method=post, es decir, crear una variable hidden que contenga el campo id dentro de un formulario y antes de enviarlo, mediante javascript, le cambias el valor al id que quieras, después recibes el valor con, por ejemplo en php, $_POST['id'], así evitas que aparezca explícitamente el id en la barra de direcciones

No sé si te será de ayuda, pero bueno, ahí queda
Hasta pronto

Ruben

07/7/2005
¿Has probado a utilizar el modulo mod_rewrite()?

Enrique Santos Calderón

11/9/2005
Simplemente cambia el método "GET" por METHOD="POST": el usuario jamás podrá modificar las variables enviadas al servidor de esta manera.

Miguel

17/11/2006
Ya que hablan de ModRewrite, ofrezco una referencia dentro de DesarrolloWeb.com que explica lo que es y su utilización: Editar htaccess para crear direcciones amigables
http://www.desarrolloweb.com/manuales/htaccess-para-urls-amigables.html

Juan

17/11/2006
Hablan del referer, pero hay que saber que algunos navegadores no lo envían o si se navega con algún programa para aumentar la privacidad, es posible que no se envíe. En cualquier caso, como a veces no lo tenemos, es mejor no basarnos en eso.
Por lo que respecta a enviar los datos por POST en lugar de GET, puede servir para que no editen fácilmente la URL, pero existen métodos para generar las cabeceras que se envían por el formulario a la página, de modo que es posible pasar información por POST falsa o generada de otros modos.

Willy Rios

30/11/2006
Hola a todos..

Primero que todo tienen que tener bien definidos los conceptos de estas variables

$_SERVER['HTTP_REFERER']
$_SERVER['REQUEST_METHOD']
$_SERVER['REQUEST_URI']

EL código para impedir que los usuarios ingresen directamente de la barra de direcciones y no del vínculo correspondiente puede ser el siguiente:

$read = fopen($_SERVER['HTTP_REFERER'], "r") or die("<br />"Mensaje de error de ingreso para el usuario");

Esto generará el mensaje de error para el usuario, ya sea para que vaya a la página principal o lo que ustedes concideren necesario.

Espero que les haya ayudado en algo.. Cualquier cosa me corrigen..

Un saludo para Miguel Angel, por todo el apoyo a la comunidad de programadores..

Si tiene tiempo visiten la página de mi empresa y la que yo desarrollé:

http://www.fortunawelcome.com

Luis Augusto Agudelo

28/11/2007
if($_GET["usu"])
if($_SESSION["salir"])
{
header("Location: logout.php");
}
else
{
$_SESSION["salir"]=1;
}
else
{
header("Location: logout.php");
}

Bal

15/5/2009
Quiza con $_REFERER
Prueba esto quiza funcione:
<?
if(count($_GET) && !$_SERVER['HTTP_REFERER'])
echo "Error en paso de parámetros";
?>
Esto valida que solo cuando el usuario ingresa por un <a href =""> de tu página muestres el contenido y si el usuario cambia algún parámetro entonces el SERVIDOR de php detecta que no proviene de una URL especifica dicha pagina
Desventajas: si utiliza el usuario explorer y en tu programación usas redireccionamientos con Header("Location: $url") el código no funciona.
Atte. Bal C.R
www.modelosgraficos.com

BellSoft

20/5/2010
Usando ASP
Saludos,

Esto es posible utilizando asp.net pasando la query por url y encryptando el id como unidentify (sql).

Debes tener en el evento de carga de la página la captura de la query, para que una vez de determine si existe o no. de esta form podras garantizar que le enviaria a una pagina de error en caso de no existir la query (pagina personalizada).

bye.

Jossimar

02/4/2014
USANDO SESIONES
- Puedes usar sesiones para evitar mandar parámetros por la URL.
- Usando RouteTable en la clase Global.asax
- Encriptando los parámetros a enviar por la URL (podrías usar SHA256).
FAQ relacionadas
Volver al árbol de categoríasVolver al árbol de categorías