Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/11/2009, 04:44
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 18 años
Puntos: 20
Mejorar seguridad llamada al script

Buenas,

Me gustaría mejorar mi seguridad en el código, para saber que mis scripts no son ejecutados desde fuera de mi servidor. Para ello hasta ahora tenía lo siguiente:

Código php:
Ver original
  1. // chequear página que lo llama para devolver errores a dicha página.
  2. $url = explode("?",$_SERVER['HTTP_REFERER']);
  3. $pag_referida=$url[0];
  4. $redir=$pag_referida;
  5.  
  6. function Redirigir_error($num_error) {
  7.   $_SESSION['error']=$num_error;  
  8.   Header ("Location: /entrada_login.php");
  9.   exit;
  10. }
  11. // chequear si se llama directo al script.
  12. if ($_SERVER['HTTP_REFERER'] == ""){
  13.     die (Header ("Location: /error/ruta_incorrecta.php"));
  14.     exit;
  15.     }

Esto hacia que si el script se llamaba de forma directa redirige al usuario a una pagina de error. Pero claro evitar esto es sencillo, tan solo basta con poner un enlace que apunte al script y ya no será llamado de forma directa!

Entonces he pensado en hacerlo así, modificando la linea 12

Código php:
Ver original
  1. // chequear página que lo llama para devolver errores a dicha página.
  2. $url = explode("?",$_SERVER['HTTP_REFERER']);
  3. $pag_referida=$url[0];
  4. $redir=$pag_referida;
  5.  
  6. function Redirigir_error($num_error) {
  7.   $_SESSION['error']=$num_error;  
  8.   Header ("Location: /entrada_login.php");
  9.   exit;
  10. }
  11. // chequear si se llama directo al script.
  12. if ($redir != "http://dominio.com/index.php"){
  13.     die (Header ("Location: /error/ruta_incorrecta.php"));
  14.     exit;
  15.     }

De esta forma solo hará caso si el script es llamado desde la pagina http://dominio.com/index.php, pero mi pregunta es... si esta protección no se puede evitar de alguna forma? suplantando el nombre de la página por ejemplo?

Acepto criticas y sugerencias!

Muchas gracias de antemano