Django send_mail安全密码

问题描述 投票:0回答:2

我正在尝试从应用程序发送电子邮件,但是在我的设置中它要求放置EMAIL_HOST_PASSWORD,虽然它有效,但是如何保护它不被视为GitHub或何时部署?

settings.py:  
EMAIL_HOST='smtp.gmail.com'
EMAIL_HOST_USER='[email protected]'
EMAIL_HOST_PASSWORD=''
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'

Views.py:
def contact(request):
    if request.method=='POST':
        message=request.POST['message']

        send_mail('Contact Form', 
        message,
        settings.EMAIL_HOST_USER,
        ['[email protected]'],
        fail_silently=False)
    return render(request, 'first_app/contact.html')
django security sendmail password-encryption
2个回答
0
投票

在本地计算机上,将敏感数据放在环境变量中。如果您还没有使用过,请查看以下链接:Environment variables tutorial

如果某人克隆了您的项目,他当然无法访问您的环境变量,因此在README中通过键入自己的电子邮件凭据为用户添加如何正确配置项目的信息。隐藏SECRET_KEY也非常重要。

在部署时,它取决于您要部署Django项目的位置。如果您拥有云计算机,则可以通过SSH连接到该计算机并设置环境变量。我相信许多服务使部署变得更加容易,而配置会询问您要设置的ENV变量。检查Heroku:Heroku


0
投票

除了存储在环境变量中之外,如上所述,还可以存储在文件中,这样您就可以从该文件中读取所有数据,包括用户名和密码,然后应用于您的应用程序。

这是一个很好的解决方案,即使在生产中,因为您可以控制文件权限,因此它可以避免任何人读取您的凭据的问题。

你可以看看How do I change permissions for a folder and all of its subfolders and files in one step in Linux?

希望能帮助到你

© www.soinside.com 2019 - 2024. All rights reserved.