Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Evitar accesar directamente a un archivo .php que es llamado desde ajax

Estas en el tema de Evitar accesar directamente a un archivo .php que es llamado desde ajax en el foro de Frameworks JS en Foros del Web. El problema es que generalmente para evitar acceder directamente a un scritp php lo hacia con un define pero el problema es que el script ...
  #1 (permalink)  
Antiguo 02/04/2008, 14:20
 
Fecha de Ingreso: diciembre-2006
Ubicación: Peruvian
Mensajes: 142
Antigüedad: 18 años
Puntos: 7
Evitar accesar directamente a un archivo .php que es llamado desde ajax

El problema es que generalmente para evitar acceder directamente a un scritp php lo hacia con un define pero el problema es que el script php es llamado desde una funcion javascript y si le agrego un define no me permite acceder a el alguna idea de como hacerlo?
Gracias.
  #2 (permalink)  
Antiguo 02/04/2008, 15:30
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 18 años
Puntos: 11
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
  #3 (permalink)  
Antiguo 02/04/2008, 15:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Re: Evitar accesar directamente a un archivo .php que es llamado desde ajax

Agrega un parámetro extra en tu AJAX para que sepas que el request viene desde AJAX, es la forma mas sencilla que se me ocurre.

Tema trasladado a AJAX.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:52.