Ver Mensaje Individual
Antiguo 02-abr-2008, 16:30   #2 (permalink)
usermax
usermax tiene algunos puntos positivos de karma
 
Fecha de Ingreso: diciembre-2006
Mensajes: 521
Enviar un mensaje por MSN a usermax
Re: Evitar accesar directamente a un archivo .php que es llamado desde ajax

Hay dos posibilidades en las que se puede acceder a tu archivo usado en ajax:

1) Acceder con la url directamente
2) Llamar el mismo archivo con ajax pero en otra página, que lo implementen en otro sitio que no sea el tuyo.

En el primer caso: en el de acceder directamente en la URL entonces la variable
Código PHP:
$_SERVER['HTTP_REFERER'
sería nula.

EN el caso en que se use en otra página por ajax y con un link común y corrienmte allí $_SERVER['HTTP_REFERER'] no estaría vacío pero la variable

Código PHP:
$_SERVER['HTTP_HOST'
no coincidiría con tu host.

Entonces teniendo en cuenta estos dos factores podemos hacer una función que haga todo por nosotros.



Código PHP:
function protectAjax() {
 
$reused false;
 
  if (!
$_SERVER['HTTP_REFERER']) {
   
$reused true// Aquí se está intentando acceder directamente
  
}
  else {
   if (
$_SERVER['HTTP_HOST'] != "www.midominio.com" && $_SERVER['HTTP_HOST'] != "midominio.com" ) {
    
$reused true// Aquí se implementó en otra página por medio de un link o en ajax
   
}
  }
 
 if (
$reused === true) {
  
header("HTTP/1.0 404 Not Found");
  echo 
'<h1>Not Found</h1>';
  exit();
 }


Reemplaza midominio.com por tu propio dominio

Ahora a la función la implementas en el encabezado de las páginas que quieras proteger:

Código PHP:
include_once("protect.php"); // Aquí tienes la función de arriba
protectAjax();
 
// Resto del código 
Saludos
__________________
www.dominiomax.com

Basta de spam en nuestros forms!! conoce AntiSpam Class
usermax está desconectado   Responder Citando