¿Es realmente seguro almacenar claves API en variables de entorno?

13

Este sitio dice que es mejor mantener las claves API en la variable de entorno fuera del código. Y aquí

  

Almacenamiento de credenciales de forma segura

     

Debe tener mucho cuidado para asegurarse de que sus credenciales se almacenen de forma segura. Si alguien obtiene su api_key o access_token con el envío o todos los permisos, podrá enviar todos los bitcoins de su cuenta.

     

En particular, debe evitar almacenar estas credenciales en su base de código (que se agrega al control de versiones) o en su base de datos a menos que las haya cifrado de forma segura. Separar las credenciales de su base de código y su base de datos es una buena práctica.

     

El acceso a la clave API está desactivado de forma predeterminada en todas las cuentas. Por lo tanto, si decide realizar una integración de clave API, primero deberá habilitarla y seguir los pasos necesarios para almacenarla de forma segura. Siempre puedes regenerar tu clave API (o deshabilitarla) si crees que se ha comprometido.

Sin embargo, siempre que un programa falla, a menudo envía el entorno como parte del informe de bloqueo:

enlace

  

Variables de entorno:   ...

Entonces ... ¿cuál es? No veo por qué almacenar claves en el entorno es más seguro que el código fuente. Si alguien llega al sistema, tiene acceso a ambos.

    
pregunta Chloe 01.02.2014 - 08:22
fuente

2 respuestas

11

Si su computadora puede usar la API sin una contraseña, entonces la información debe almacenarse en algún lugar de su sistema. El punto de almacenarlo en la variable de entorno es hacerlo para que no lo ingreses en el control de versión junto con la fuente, sin embargo, lo ideal sería usar algo como un HSM o TPM para almacenar la API. clave de forma cifrada que puede recuperar mediante programación o almacenarla en un disco cifrado con las credenciales de la cuenta para el servicio o la aplicación que lo utiliza.

Personalmente, dudaría en utilizar variables de entorno, pero si solo le preocupa revelar accidentalmente la clave (y no la seguridad local para alguien con acceso a su caja), entonces es una opción para separar el código y las claves. , simplemente no es el mejor.

    
respondido por el AJ Henderson 01.02.2014 - 16:57
fuente
1

El uso de variables de entorno podría ser un mal consejo excepcional. Como se indica, las variables de entorno pueden revelarse en ciertas circunstancias, y dentro del mundo de PHP, por ejemplo, una página de phpinfo que se le puede pedir que proporcione como parte de un proceso de soporte a un tercero haría esto. También considere cómo y cuándo se establecerá la variable de entorno. Si se configura cuando se inicia el servidor web, la variable podría ser visible para el script cualquier que se ejecute. Cuando un pirata informático explota la debilidad de un sitio para depositar un script arbitrario que puede ejecutar (según estimaciones recientes, 10 de miles de sitios se infringen diariamente), pueden obtener la clave en cuestión de segundos. Si, por el contrario, la clave se configura desde un archivo dentro de una parte única e idealmente oscura de la base de código, y quizás mediante un código nativo o protegido, podría llevar mucho más tiempo antes de que el pirata informático pueda identificar la clave. Si tiene instalada una buena detección de intrusiones, también es muy probable que pueda bloquearlas antes de que hayan podido analizar su sitio para ubicar dónde se establece la clave. Divulgación: estoy asociado con ionCube.

    
respondido por el Nick 02.02.2014 - 14:07
fuente

Lea otras preguntas en las etiquetas