|
Aplicaciones que aprovechan esta posibilidad son los procesadores de formularios (aceptar resultados, enviarlos a un email, y luego redireccionar hacia una pagina de agradecimiento), los scripts utilizados para Recomendar una pagina Web (peticion de los emails, envio de la invitacion, y redireccionar al usuario), etc.
El problema de utilizar este modelo abierto de diseño es que asi como tu y tus clientes pueden acceder al script enviandole tan solo un par de variables para su personalizacion, cualquier otro Webmaster podra hacer lo mismo sin tu autorizacion y consumiendo los recursos de tu servidor.
Para evitar esto y proteger nuestros scripts, haremos uso de la variable de entorno HTTP_REFERER, la cual contiene la direccion Web desde donde el script esta siendo llamado.
En caso de que la direccion de origen nos sea desconocida, redireccionaremos al cliente hacia una pagina destinada a tal fin.
Incluso esta misma proteccion nos servira para que el script evite hacer lo que debe si esta siendo llamado por los llamados "Spiders" o "Robots", utilizados por los directorios al momento de indexar nuestra pagina Web, ya que estos se cuelgan de todo enlace que encuentren en nuestra pagina y pertenezcan a nuestro dominio, incluidos los scripts cgi.
Las siguientes lineas de codigo te mostraran como puedes implementar esta funcionalidad en cualquiera de tus scripts, agregandolas al inicio de los mismos.
Recuerda que el codigo es para uso libre y su finalidad es introducirte en los conceptos que trata y animarte a que experimentes por tu cuenta.
Si publicas u ofreces a terceros una version modificada del mismo, no olvides mencionar al autor original como figura en su cabecera.
.
PROTECCION.PL
###################################
# (C) 2001 Christian Gustavo Riva #
# http://www.cgrsoftware.com #
###################################
#!/usr/bin/perl
## Cargamos en la matriz los dominios de los sitios
## a los cuales les daremos el visto bueno para
## continuar ejecutando el script:
my @SitiosAutorizados = ( "www.cgrsoftware.com",
"63.95.137.150",
"www.fonomax.com" );
## Por omision, cancelamos el uso del script:
my $Cancelar = 1;
## Tomamos la direccion Web desde la cual el
## script esta siendo ejecutado:
my $Origen = $ENV{'HTTP_REFERER'};
## Definimos la pagina Web hacia donde redireccionaremos
## al cliente si proviene de un sitio no autorizado:
my $PaginaError = "http://www.cgrsoftware.com/error.htm";
## Recorremos uno por uno los items de la matriz:
foreach (@SitiosAutorizados)
{
## La direccion de origen contiene en su sintaxis
## a alguno de los dominios autorizados?
## Si si, cancelamos y salimos del foreach:
if( $Origen=~/$_/i ) { $Cancelar=0; last; }
}
## No fue reconocido el dominio de origen?
## Redireccionamos al cliente hacia la pagina predeterminada:
if($Cancelar) { print "Location: $PaginaError\n\n"; exit; }
## Y aqui continua el codigo natural de tu script
## con la seguridad de que esta siendo corrido desde
## un sitio autorizado para hacerlo.
|