Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Seguridad en REST API PHP

Estas en el tema de Seguridad en REST API PHP en el foro de PHP en Foros del Web. Hola a todos. Me inicio en este foro en busca de alguien que arroje algo de luz sobre una duda/problema sobre el que llevo intentando ...
  #1 (permalink)  
Antiguo 07/10/2014, 00:31
 
Fecha de Ingreso: octubre-2014
Ubicación: Tercer planeta solar
Mensajes: 4
Antigüedad: 9 años, 6 meses
Puntos: 0
Seguridad en REST API PHP

Hola a todos.

Me inicio en este foro en busca de alguien que arroje algo de luz sobre una duda/problema sobre el que llevo intentando documentarme un tiempo pero no encuentro quien/que me informe de ello.

He desarrollado una API REST en PHP para ser compartida por una aplicación web y otra de Android. El problema me surge en la autentificación de los usuarios en la misma. La aplicación es de "andar por casa" y no se va a usar SSL en la conexión.

Leo que el método es el siguiente:

- Un usuario al darse de alta genera en su registro de base de datos una Key privada que almacena en su dispositivo

- Por cada petición que haga debe encriptar la URL que solicite (una vez ordenados los parámetros por orden alfabético) con la Key privada y añadir el código generado a la URL

- El servidor recibe los parámetros y realiza la misma acción, si el código generado coincide con el enviado es válido.

Hasta aquí todo perfecto, pero ahora es cuando viene el problema/duda. Cuando yo hago el login, si tengo que enviar los parámetros en la URL, los datos de usuario/contraseña van en la petición y cualquiera que captura dicha petición ya tendría esos datos. Es más, si yo me voy a otro equipo e introduzco mi usuario y contraseña, la Key privada no está alojada en ese equipo y la única forma de que se me devuelva es pasando los datos del login, con lo cual estamos en el mismo problema de seguridad al enviar inicialmente los datos de login sin seguridad.

No sé si he conseguido explicar con claridad el problema. Espero podáis indicarme que me estoy perdiendo.

Gracias de antemano!
  #2 (permalink)  
Antiguo 07/10/2014, 03:38
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Seguridad en REST API PHP

Bueno, siempre puedes hacer algo así, que imagino que te ayudará.

En la app, para hacer login, enviar los siguientes campos:
usuario,
time,
hash,

Y algun campo más si eso...

Y en hash, que tenga algo asi como sha1(md5("PASSWORD".$time."MY_APP_MOLONA".$usuario )).

Es una encriptación básica, en el servidor checkeas que el time sea más o menos correcto (que no hayan pasado más de X segundos quizás), y compruebas el hash.

Q si, q si no usas SSL es más complicado, pero así almenos dificultas un poco la cosa.
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 07/10/2014, 03:48
 
Fecha de Ingreso: octubre-2014
Ubicación: Tercer planeta solar
Mensajes: 4
Antigüedad: 9 años, 6 meses
Puntos: 0
Pregunta Respuesta: Seguridad en REST API PHP

Cita:
Iniciado por Eleazan Ver Mensaje
Bueno, siempre puedes hacer algo así, que imagino que te ayudará.

En la app, para hacer login, enviar los siguientes campos:
usuario,
time,
hash,

Y algun campo más si eso...

Y en hash, que tenga algo asi como sha1(md5("PASSWORD".$time."MY_APP_MOLONA".$usuario )).

Es una encriptación básica, en el servidor checkeas que el time sea más o menos correcto (que no hayan pasado más de X segundos quizás), y compruebas el hash.

Q si, q si no usas SSL es más complicado, pero así almenos dificultas un poco la cosa.
Gracias por la respuesta, pero sigo con dudas (lento de mente que es uno).

Tu consejo es, que en el primer login, que podemos suponer que si es desde una máquina nueva no tenemos la Key privada, usemos el password y el timestamp para generar una cadena encriptada y una vez verificado, ya que tenemos el password en nuestra base de datos, devolver la Key privada y en las siguientes peticiones sí usarla para generar el hash. ¿Lo he entendido bien?
  #4 (permalink)  
Antiguo 07/10/2014, 04:14
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Seguridad en REST API PHP

Cita:
Iniciado por Carinae2k Ver Mensaje
Gracias por la respuesta, pero sigo con dudas (lento de mente que es uno).

Tu consejo es, que en el primer login, que podemos suponer que si es desde una máquina nueva no tenemos la Key privada, usemos el password y el timestamp para generar una cadena encriptada y una vez verificado, ya que tenemos el password en nuestra base de datos, devolver la Key privada y en las siguientes peticiones sí usarla para generar el hash. ¿Lo he entendido bien?
O algo parecido.

Alguna forma para enviar ese pasword encriptado, sin ese MITM (man in the middle) que te preocupa, o en caso de que ocurra, que sean mínimos los daños.

Si envías sólo el pass encriptado, siempre puedo reenviar esa encriptación. La cosa es añadirle un parámetro dinámico, para que si alguien pilla ese hash, no le sirva.

Es lo primero que me viene a la cabeza ;)
__________________
>> Eleazan's Source
>> @Eleazan

Etiquetas: rest, seguridad+php
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 12:09.