almacenamiento de credenciales de cliente en el servidor OAuth2

2

Estoy desarrollando una API y utilicé una implementación recomendada del protocolo OAuth2: PHP OAuth2 Server .

Esta biblioteca almacena el ID del cliente y el secreto del cliente como texto sin formato en una tabla de base de datos.

Tenga en cuenta que me refiero a la credencial de los clientes de la API, no a las credenciales de los usuarios.

Me preocupa el caso de que un atacante obtenga acceso a la base de datos, podrá utilizar los datos obtenidos a voluntad, a diferencia de las contraseñas almacenadas con hash + salted que tardan mucho tiempo en hacerse útiles.

¿Esto es realmente un riesgo de seguridad? ¿Cómo podría mejorarse la seguridad, además del firewall y los permisos de usuario?

PS: Revisé esta pregunta pero mi aplicación se ejecuta en servidores * nix

    
pregunta Sanção 19.11.2014 - 19:32
fuente

1 respuesta

3

No consideraría esto como un problema de seguridad importante, ya que los valores están limitados solo al acceso de su sistema a sitios de terceros. Es menos deseable, pero los valores se pueden invalidar fácilmente sin sangrar en otros sistemas que acceden a los mismos servicios. Ciertamente no duele, e incluso es sabio, cifrarlo, pero tendría que cifrarlo con un valor que se encuentra en el servidor de todos modos, por lo que solo agrega un poco de dificultad para obtener acceso a las claves. No puede marcarlos como lo haría con una contraseña, ya que son solo un valor de token que no tiene relación con ninguna entrada de usuario que haya visto.

Dependiendo de su caso de uso, puede usar la contraseña del usuario para cifrar los valores (si no está usando oAuth para la autenticación de su sistema), y solo puede agarrar y mantener los tokens mientras el usuario está registrado. en (si usa oAuth para la autenticación), pero eso limita cosas como su capacidad para realizar cualquier interacción mientras el usuario está fuera de línea, lo que puede no ser una restricción viable en su sistema.

El uso de esas claves debe estar restringido al acceso de sus aplicaciones a los sistemas de terceros y también puede estar limitado al acceso de su servidor a esos sistemas, dependiendo de cómo estén configuradas las cosas.

Son de un valor bastante bajo para un atacante. Es una buena idea tomar las medidas que pueda tomar para protegerlos, pero no los clasificaría tan sensibles como una contraseña (que es muy probable que se use en otros lugares y otorgue acceso directo a la cuenta).

    
respondido por el AJ Henderson 19.11.2014 - 19:45
fuente

Lea otras preguntas en las etiquetas