Foros del Web » Programando para Internet » PHP »

Restringir acceso a una pagina llamada por ajax

Estas en el tema de Restringir acceso a una pagina llamada por ajax en el foro de PHP en Foros del Web. Hola voy al grano: Estoy en el index.php e incluyo por medio de ajax otro archivo así: $.get("modulos/resultados.php?random=" + Math.random()*99999,.......... Todo bien, pero como restrinjo ...
  #1 (permalink)  
Antiguo 30/11/2011, 21:26
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Restringir acceso a una pagina llamada por ajax

Hola voy al grano:

Estoy en el index.php e incluyo por medio de ajax otro archivo así:

$.get("modulos/resultados.php?random=" + Math.random()*99999,..........


Todo bien, pero como restrinjo el acceso si alguien coloca en el navegador la url:

http://.mi-sitio.com/modulos/resultados.php


como evito que vean el contenido?

Espero que puedan ayudarme, gracias.
__________________
la la la
  #2 (permalink)  
Antiguo 30/11/2011, 21:46
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años
Puntos: 322
Respuesta: Restringir acceso a una pagina llamada por ajax

Existen varios métodos... Puede ser cargando una sesión en index.php y checar su existencia en resultados.php
También enviándole un parámetro a resultados.php por get, o enviándoselo por post.

Hay muchas formas, analizando la situación un poco puedes llegar a tu conclusión y opción que más se ajuste a lo que necesitas

Saludos
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #3 (permalink)  
Antiguo 30/11/2011, 21:59
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Restringir acceso a una pagina llamada por ajax

Cita:
Iniciado por Sourcegeek Ver Mensaje
Existen varios métodos... Puede ser cargando una sesión en index.php y checar su existencia en resultados.php
También enviándole un parámetro a resultados.php por get, o enviándoselo por post.

Hay muchas formas, analizando la situación un poco puedes llegar a tu conclusión y opción que más se ajuste a lo que necesitas

Saludos
1-A ver, si cargo una sesión en index , cuando entre a resultados.php tambien existirá, entonces no sirve, o estoy equivocado?

2- si envio parametro , mirando el codigo fuente también cualquiera podría enviarlo. o no?
__________________
la la la
  #4 (permalink)  
Antiguo 30/11/2011, 22:22
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años
Puntos: 322
Respuesta: Restringir acceso a una pagina llamada por ajax

Claro, tienes razón, pero en ambos casos se puede complementar con algunos datos insertados en la base de datos y crear una especie de token. Cuestión de que analices todo, como ya lo dije.

Saludos
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #5 (permalink)  
Antiguo 30/11/2011, 22:40
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Restringir acceso a una pagina llamada por ajax

la verdad no se me ocurre como,por favor, podrías ser más claro ?
__________________
la la la
  #6 (permalink)  
Antiguo 01/12/2011, 09:43
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Restringir acceso a una pagina llamada por ajax

Esto, con PHP parece NO tener solución, ya estuve investigando
__________________
la la la
  #7 (permalink)  
Antiguo 01/12/2011, 09:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Restringir acceso a una pagina llamada por ajax

Tienes que aprender cosas básicas, para PHP un request HTTP es un request HTTP, desde donde venga del cliente, no discrimina si es desde AJAX o no a menos que el cliente se lo informe.

Muchos FWs existentes en JS envian una cabecera extra XMLHttpRequest indicando que el request es AJAX, así que puedes verificar en PHP, que si el request no incluye la cabecera XMLHttpRequest no muestras el contenido.

Un ejemplo sencillo:
Código PHP:
Ver original
  1. /**
  2.  *
  3.  * Checks if a request is a AJAX request
  4.  * @return bool
  5.  */
  6. function isAjax() {
  7.     return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']  == 'XMLHttpRequest');
  8. }

Claro esto depende de que el cliente mismo te indique que el request es AJAX, de otra manera no es posible discriminarlo.

Usar un token o una sesión no son herramientas efectivas, ya que como te digo, al final todos son requests HTTP que van desde el cliente (browser) al servidor y para PHP es imposible saber de donde fue hecho el request si el cliente mismo no se lo provee.
  #8 (permalink)  
Antiguo 01/12/2011, 10:26
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Restringir acceso a una pagina llamada por ajax

Gracias GatorV, te agradezco mucho la ayuda
__________________
la la la
  #9 (permalink)  
Antiguo 01/12/2011, 12:58
 
Fecha de Ingreso: diciembre-2010
Ubicación: valencia
Mensajes: 203
Antigüedad: 13 años, 5 meses
Puntos: 11
Respuesta: Restringir acceso a una pagina llamada por ajax

de todos modos como ya te han dicho, eso no va a solucionar el problema. el cliente puede mandar la cabecera para que creas que se hace desde ajax y entrar por la url normalmente.
  #10 (permalink)  
Antiguo 01/12/2011, 13:02
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Restringir acceso a una pagina llamada por ajax

Cita:
Iniciado por enrique4480 Ver Mensaje
de todos modos como ya te han dicho, eso no va a solucionar el problema. el cliente puede mandar la cabecera para que creas que se hace desde ajax y entrar por la url normalmente.
si ye se, pero tampoco necesito tanta seguridad en el sitio que estoy construyendo, gracias
__________________
la la la
  #11 (permalink)  
Antiguo 01/12/2011, 13:23
 
Fecha de Ingreso: noviembre-2011
Ubicación: Morelia, Mich, México
Mensajes: 95
Antigüedad: 12 años, 5 meses
Puntos: 18
Respuesta: Restringir acceso a una pagina llamada por ajax

Yo como lo he hecho es igual que como lo dice enrique

pero defino una constante en mi config

Código PHP:
Ver original
  1. define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');

y en la página que lo quiera usar, ya hago if (IS_AJAX)


solo como dato

saludos!
__________________
Que de Cosas - Tienda En linea México

La Batalla Por tu cuerpo - Dietas|Rutinas|Entrenamientos|Salud

Última edición por quedecosas; 01/12/2011 a las 13:31

Etiquetas: ajax, llamada, restringir
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 14:17.