Cómo evitar almacenar contraseña en el código Python

Necesito usar una contraseña para iniciar sesión en un servicio Necesito hacer algunas cosas en Python, pero no quiero almacenar la contraseña en el código.

Hice un poco de investigación y encontré la encoding base64. Esto parece bueno, pero requiere que la contraseña se almacene en el código de todos modos.

>>> import base64 >>> encoded = base64.b64encode('data to be encoded') # password stored in the code >>> encoded 'ZGF0YSB0byBiZSBlbmNvZGVk' >>> data = base64.b64decode(encoded) >>> data 'data to be encoded' 

Para ustedes que ya han trabajado con la administración de contraseñas en Python, ¿cuál es la mejor opción? ¿Almacenar la contraseña en un archivo? ¿Utilizar solo la cadena b64encode() generada y decodificarla cada vez que el progtwig necesita la contraseña?

¿Puedo suponer que está hablando de almacenar sus credenciales en un sitio, que el usuario no puede registrarse por sí mismo?

La forma más correcta de hacer esto es NO hacerlo. en general, almacenar las credenciales dentro del progtwig no es muy seguro y las personas que quieran (y saben cómo) podrán obtener esas credenciales

Para una solución que evita el almacenamiento de sus credenciales en el código, puede crear un servidor de middleware que almacene las credenciales de usuario individuales en las que los usuarios se registran y luego almacena las credenciales de su sitio en ese servidor para que los usuarios lleguen a un punto final en su middleware que luego realiza su consulta. contra el sitio utilizando sus credenciales de inicio de sesión y devuelve el resultado literalmente. Sin embargo, esta es también una solución bastante difícil. sin embargo, si está distribuyendo esto a usuarios que no son de confianza y cree que es muy importante proteger las credenciales de terceros, esta es realmente la única opción que tiene.

otra opción es permitir que los usuarios registren directamente su propio nombre de usuario / contraseña en el sitio de terceros (incluso podría ser capaz de automatizarlo) y luego pedirle al usuario sus credenciales únicas y almacenarlas en el directorio de inicio del usuario o algo así (cifrar / codificar si quieres …)

según sus ediciones, creo que lo siguiente puede aplicarse a su caso de uso. Si lo distribuye a un grupo de confianza muy pequeño o si encuentra una manera de no importarle demasiado si las personas obtienen las credenciales del progtwig, hay muchas maneras de hacerlo. codifique / cifre / ofusque su contraseña en el código mismo. incluyendo la base64 que lo codifica, o aes lo encripta, dividiéndolo en varios lugares. todo esto bloqueará las formas más comunes en que las personas escanean el código en busca de contraseñas (pero una persona determinada definitivamente podrá recuperarla)

No inserte la contraseña (clara u ofuscada) en su progtwig. En su lugar, permita que el usuario proporcione la contraseña en un archivo. Este es el enfoque adoptado por progtwigs como los clientes estándar de FTP y MySQL.

Para obtener puntos de bonificación, verifique que el archivo no pueda ser leído (y, preferiblemente, no escrito o reemplazado) por un usuario diferente que no sea root. Si es así, salga con un mensaje de error, de modo que el usuario deba solucionarlo.

Tenga en cuenta que tendrá una contraseña valiosa en la memoria; considere la posibilidad de sobrescribir tan pronto como sea posible después de su uso, por lo que no está presente en ningún archivo principal.

Si su plataforma tiene una implementación de anillo de claves adecuada, puede considerar el uso del paquete de anillo de claves de Python.