Foros del Web » Programando para Internet » PHP »

Saber qué URL llama a PHP

Estas en el tema de Saber qué URL llama a PHP en el foro de PHP en Foros del Web. Buenas! Estoy trabajando en una pequeña API web, y me está surgiendo una duda: El tema es que desde una web externa se puede hacer ...
  #1 (permalink)  
Antiguo 15/10/2012, 05:21
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años
Puntos: 33
Saber qué URL llama a PHP

Buenas!

Estoy trabajando en una pequeña API web, y me está surgiendo una duda:

El tema es que desde una web externa se puede hacer una llamada a la API, digamos así:

Código:
<script type="text/javascript" src="http://miweb.com/api/miapi.js"></script>
...
<body>
  <script type="text/javascript">llamarAPI();</script>
Lo que pasa es que por diversos temas se tiene que controlar el acceso. Por este motivo, solo ciertas URL pueden acceder a la API... por así decirlo, se tiene que configurar un acceso previamente desde la web "miweb.com".

El problema está en que no sé cómo controlar este acceso; es decir, se que se puede mirar el header "referrer", pero no sé hasta que punto es fiable usar esto como filtro... por eso posteo, a ver si alguien tiene alguna idea mejor... jeje

Espero haberme explicado bien, sino hago un esquema más detallado...

Saludos!
  #2 (permalink)  
Antiguo 15/10/2012, 06:47
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Saber qué URL llama a PHP

el control es muy sencillo, solo tenes que hacer una expresion regular o validacion que controle la aparicion de las url permitidas:
ejeplo:
if( $url tiene "miweb.com" )
ok
else
denegado
  #3 (permalink)  
Antiguo 15/10/2012, 10:24
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años
Puntos: 33
Respuesta: Saber qué URL llama a PHP

Gracias por contestar Patriarka.

Está claro que el control es sencillo. La duda/problema que tengo es que no se cómo capturar la URL externa y no se si mirar el referrer es fiable.

Saludos
  #4 (permalink)  
Antiguo 15/10/2012, 12:45
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Saber qué URL llama a PHP

el referer no es fiable del todo por que si no hubo url externa te da un error grande como una casa,
esto no deberia pasar si lo haces bien.
No tendrian que preocuparte tanto por el quiera acceder a tu url ya es un hecho que es externa,
cuando el referrer de ERROR notificas al usuario que haga bien las cosas
  #5 (permalink)  
Antiguo 15/10/2012, 15:55
Avatar de kreil  
Fecha de Ingreso: septiembre-2012
Ubicación: España
Mensajes: 63
Antigüedad: 11 años, 7 meses
Puntos: 16
Respuesta: Saber qué URL llama a PHP

Para saber cual es la url que llama desde PHP usa la variable global ERVER['SCRIPT_NAME']
__________________
Diseñador y programador de El break; de la informática
  #6 (permalink)  
Antiguo 16/10/2012, 00:22
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años
Puntos: 33
Respuesta: Saber qué URL llama a PHP

Cita:
Iniciado por Patriarka Ver Mensaje
el referer no es fiable del todo por que si no hubo url externa te da un error grande como una casa,
esto no deberia pasar si lo haces bien.
No tendrian que preocuparte tanto por el quiera acceder a tu url ya es un hecho que es externa,
cuando el referrer de ERROR notificas al usuario que haga bien las cosas
No me preocupa quién quiera acceder a mi url para acceder a la API; es obvio que si es una API (y aún si no lo fuera) ha de ser totalmente pública y accesible. Lo que me preocupa es a los datos que acceden desde cada web... te hago un poco de resumen:

En mi web los usuarios alojan datos personales (tan personales como quiera). En sus respectivas cuentas tienen muchas opciones de seguridad (privacidad) de manera que sus datos están "a salvo" de la vista de otros usuarios.

El caso está en que si hay una API, esto implica que algún usuario "listillo" (por decirlo así) podría intentar acceder a datos "publicos" de otros usuarios. Por eso implemento ciertos aspectos, tales como que solo se pueden acceder a los datos de usuario si éste lo permite (hay una opción en la web), y demás cosas.

Una de esas medidas consiste en que solo se puede acceder desde las URL que el usuario indique. Esto se hace para controlar desde qué sitios serán visibles los datos de cada usuario.

@kreil: he probado $_SERVER['script_name'] y casi casi me muestra lo que quiero. No obstante he hecho un volcado de $_SERVER y he obtenido varias variables (valga la redundancia) que me podrían ayudar a ello (por ejemplo la IP).

Gracias por contestar a ambos.

Saludos!

EDIT:

Ya está, tengo la manera de solucionarlo...

- Para poder acceder a la API, necesito incluír un "Header set Access-Control-Allow-Origin: http://dominio.com"

Por tanto, si no está en la lista no podrá acceder.

Gracias a todos por contestar!

Última edición por DoHITB; 16/10/2012 a las 02:09
  #7 (permalink)  
Antiguo 16/10/2012, 10:23
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Saber qué URL llama a PHP

es una regla del .htaccess ?
  #8 (permalink)  
Antiguo 16/10/2012, 23:38
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años
Puntos: 33
Respuesta: Saber qué URL llama a PHP

Cita:
Iniciado por Patriarka Ver Mensaje
es una regla del .htaccess ?
Se puede hacer mediante php o mediante htaccess.

Lo normal es que la gente ponga


Código PHP:
Ver original
  1. <?php Header set Access-Control-Allow-Origin: * ?>

Pero también se puede poner en .htaccess, e inclusive (como estoy haciendo yo) se pueden filtrar los origin.

Nunca te irás a dormir sin saber algo nuevo, dicen... jejeje =D

Saludos!

Etiquetas: llama, url
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 01:04.