Retroceder   Foros del Web > Programación para sitios web > AJAX

Respuesta
 
Herramientas Desplegado
Antiguo 02-abr-2008, 14:20   #1 (permalink)
ell3er ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2006
Mensajes: 75
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.
ell3er está desconectado   Responder Citando
Antiguo 02-abr-2008, 15:30   #2 (permalink)
usermax tiene algunos puntos positivos de karma
 
Fecha de Ingreso: diciembre-2006
Mensajes: 515
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
Antiguo 02-abr-2008, 15:30   #3 (permalink)
Moderador
GatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy pronto
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: Queretaro, Mexico
Mensajes: 11.289
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.
__________________
Blog Web
GatorV está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 10:22.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93