Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: OssoH en 30 Octubre 2014, 10:06 am



Título: Leer claveAPI en url. PHP
Publicado por: OssoH en 30 Octubre 2014, 10:06 am
Hola :
Quiero dentro de un fichero PHP recuperar la CLAVEAPI que le paso por URL y no sé cuál sería la forma correcta. Podría por PHP obtener la url y luego hacer un split de forma que pueda quedarme con la CLAVEAPI pero lo veo muy cutre. No hay forma más sencilla de hacerla?

Ejemplo de llamada
http://CLAVEAPI@MITIENDA.COM/api/addresses

PHP
¿Como recupero el valor de claveapi?

Gracias



Título: Re: Leer claveAPI en url. PHP
Publicado por: MinusFour en 30 Octubre 2014, 16:14 pm
En ese punto de la url no creo que puedas sacarla tan facilmente. ¿Porque no utilizar GET? ¿o POST?


Título: Re: Leer claveAPI en url. PHP
Publicado por: OssoH en 30 Octubre 2014, 16:34 pm
Vi en páginas que el nombre de usuario lo ponían en esa parte para acceder a la url y tenía curiosidad por saber como se trabajaba de esta forma.
cómo tú dices lo hare por GET o POST
Gracias


Título: Re: Leer claveAPI en url. PHP
Publicado por: #!drvy en 30 Octubre 2014, 16:48 pm
Lo que estas diciendo tu se llama Autenticación de acceso básica vía HTTP (http://es.wikipedia.org/wiki/Autenticaci%C3%B3n_de_acceso_b%C3%A1sica).

Básicamente envías un header al navegador/cliente que pide que proporcione datos de acceso y los puedes recoger ya sea vía Apache o via PHP.

http://php.net/manual/es/features.http-auth.php



Un ejemplo seria:

Código
  1. <?php
  2.  
  3. if (!isset($_SERVER['PHP_AUTH_USER'])) {
  4.    header('WWW-Authenticate: Basic realm="Mi ervidor API"');
  5.    header('HTTP/1.0 401 Unauthorized');
  6.    die('Debes introducir una clave API');
  7. } else {
  8.  
  9.   $clave_api = $_SERVER['PHP_AUTH_USER'];
  10.   die('La API que has introducido es: '.$clave_api);
  11. }
  12.  
  13. ?>


Código
  1. http://miclaveapi@mitienda.com/api/addresses/prueba.php

Pero nótese que ese no es el propósito con el que fue creado. Realmente fue pensado para proporcionar usuario y contraseña.

http://www.httpwatch.com/httpgallery/authentication/

Saludos


Título: Re: Leer claveAPI en url. PHP
Publicado por: alex171294 en 5 Noviembre 2014, 17:22 pm
drvy muy interesante, si bien fueron diseñadas para usuario y contraseña, la cifrado que tiene a la hora de enviar la información es light (un hash base64), no me parece mal que lo use para un api key.

estaba observando que en formato enlace la petición se hace

usuario@dominio.com/recurso

y donde se pondría la contraseña si fuera en url?

saludos!


Título: Re: Leer claveAPI en url. PHP
Publicado por: #!drvy en 5 Noviembre 2014, 18:39 pm
Citar
la cifrado que tiene a la hora de enviar la información es light (un hash base64)

Si así es.. es bastante light xD. Aunque es raro verlo en servicios como GMAIL xD

Código
  1. http://usuarioSinArroba:contraseñaSinBase64@mail.google.com/mail/feed/atom


Citar
y donde se pondría la contraseña si fuera en url?

Después del usuario se añaden : (dos puntos) y se pone la contraseña seguida de @dominio.

Tipo lo que puse arriba.

Saludos


Título: Re: Leer claveAPI en url. PHP
Publicado por: alex171294 en 5 Noviembre 2014, 18:45 pm
Si así es.. es bastante light xD. Aunque es raro verlo en servicios como GMAIL xD

Código
  1. http://usuarioSinArroba:contraseñaSinBase64@mail.google.com/mail/feed/atom


Después del usuario se añaden : (dos puntos) y se pone la contraseña seguida de @dominio.

Tipo lo que puse arriba.

Saludos

muy interesante, jamás lo había visto en práctica (salvo aparentemente en CPanel de los hostings)


Título: Re: Leer claveAPI en url. PHP
Publicado por: #!drvy en 5 Noviembre 2014, 18:55 pm
Si la verdad es que no se suele ver mucho.. creo recordar que los directorios protegidos de apache funcionaban con el mismo principio..

Yo la primera vez que lo vi fue en un script en python para obtener los correos no leídos de gmail xD

Saludos