2017-07-31 3 views
0

J'utilise flask mail pour envoyer des messages de l'application. Je fais quelque chose comme ceci:Comment garder le mot de passe mail sûr lors de l'utilisation de flask mail

app = Flask(__name__) 
app.config.update(
    MAIL_SERVER='smtp.gmail.com', 
    MAIL_PORT=465, 
    MAIL_USE_SSL=True, 
    MAIL_USERNAME = '[email protected]', 
    MAIL_PASSWORD = 'yourpassword' 
    ) 
mail = Mail(app) 

Mais je ne veux pas que mon mot de passe soit visible dans mon code. Je veux le crypter, par exemple. Je peux stocker dans la base de données mais je n'arrive toujours pas à le garder crypté car j'ai besoin de le déchiffrer pour définir la propriété MAIL_PASSWORD.

Répondre

1

Votre application doit être en mesure d'accéder à votre mot de passe en texte clair, donc cryptant est inutile dans le scénario où le serveur est compromis.

Le cryptage peut être utile (mais je ne le suggère pas) si vous voulez l'enregistrer sur un lieu public (par exemple du code sur github) et ensuite vous donnez la clé uniquement à l'application (par exemple avec un non suivi fichier ou dans une variable d'environnement).

Puisque vous devez donner à votre demande un secret, je vous suggère de donner simplement le mot de passe de courrier électronique comme un secret.

Par exemple en utilisant un fichier appelé local_settings.py vous pouvez le faire:

# local_settings.py 
MAIL_PASSWORD = 'mypassword' 

# app.py 
... 
import local_settings 

app = Flask(__name__) 
app.config.update(
    MAIL_SERVER='smtp.gmail.com', 
    MAIL_PORT=465, 
    MAIL_USE_SSL=True, 
    MAIL_USERNAME = '[email protected]', 
    MAIL_PASSWORD = local_settings.MAIL_PASSWORD 
    ) 
mail = Mail(app) 
+0

merci pour y nos conseils – DzouSi

0

En utilisant la variable d'environnement est une bonne option (le mot de passe de messagerie, le mot de passe de la base de données, ...). Exemple:

import os 
app = Flask(__name__) 
app.config.update(
    MAIL_SERVER='smtp.gmail.com', 
    MAIL_PORT=465, 
    MAIL_USE_SSL=True, 
    MAIL_USERNAME = '[email protected]', 
    MAIL_PASSWORD = os.environ['MAIL_PASSWORD'] 
    ) 
mail = Mail(app) 

Vous pouvez définir la valeur pour MAIL_PASSWORD variable d'environnement à chaque fois de script d'exécution, en utilisant

  1. Dans Linux: export MAIL_PASSWORD="{your_mail_password}"
  2. Sous Windows: set MAIL_PASSWORD="{your_mail_password}"

ne devrait pas utiliser texte brut dans le fichier pour stocker le mot de passe