1

我正在使用烧瓶邮件从应用程序发送消息。我正在做这样的事情:

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

但我不希望我的密码在我的代码中可见。例如,我想对其进行加密。我可以存储在数据库中,但我仍然不知道如何对其进行加密,因为我需要对其进行解密以设置 MAIL_PASSWORD 属性。

4

2 回答 2

3

您的应用程序必须能够访问您的明文密码,因此在服务器受到威胁的情况下对其进行加密是没有用的。

如果您想将其保存在公共场所(例如 github 上的代码),然后您只将密钥提供给应用程序(例如使用未跟踪的文件或在环境变量)。

由于您必须为您的应用程序提供一些秘密,因此我建议您简单地将电子邮件密码作为秘密提供。

例如,使用名为local_settings.py您的文件可以执行以下操作:

# 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 = 'your@gmail.com',
    MAIL_PASSWORD = local_settings.MAIL_PASSWORD
    )
mail = Mail(app)
于 2017-07-31T09:55:17.480 回答
0

使用环境变量是一个不错的选择(对于邮件密码、数据库密码……)。例子:

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

MAIL_PASSWORD您可以在每次运行脚本时设置环境变量的值,使用

  1. 在 Linux 中:export MAIL_PASSWORD="{your_mail_password}"
  2. 在 Windows 中:set MAIL_PASSWORD="{your_mail_password}"

不应在文件中使用纯文本来存储密码

于 2017-07-31T10:57:00.097 回答