django – 如何保护Gmail的应用程序专用密码
我们将在接下来的几周内从交换机转换为谷歌托管邮件,我正在试图弄清楚如何设置电子邮件,以便我们可以从
django应用程序内部发送
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST='smtp.gmail.com' EMAIL_HOST_USER='someone@example.com' EMAIL_HOST_PASSWORD='16characters' EMAIL_USE_TLS=True EMAIL_PORT=587 所以这些是我的电子邮件设置,困扰我的部分是16字符应用程序专用密码很快将被提交到我们的git存储库. 如果我尝试在Web前端使用此pw,它会告诉我不要使用特定于应用程序的pw,而是使用我的帐户密码.这很好,至少Web界面不会允许它们进入.但是还有什么可以允许访问/通过?这个密钥在创建时没有任何限制(没有办法对它进行限制,只是一种“命名”它的方式)所以似乎有人可以使用这个密钥与Android手机并完全访问我的帐户,完全打败了2因素身份验证的目的. 那么,当您的应用发送错误报告(500秒)或向其他人发送警报时,您如何设法将谷歌用作电子邮件提供商?我见过的所有smarthost设置都需要用户名/密码,因此它会将其保留在存储库之外,但实际上并没有解决问题. 现在,我似乎必须从谷歌购买额外的“用户”并为该用户创建ASP以发送电子邮件,如果我想保持我的帐户安全. PS:刚刚借了一部不同的手机,证明它确实会让他们按预期访问我的账户.似乎ASP可能需要节点将其锁定到特定IP的能力,或者需要幻像帐户发送或其他东西…… 解决方法
如果您认为您的托管环境是安全的,您可以按照存储登录和传入环境变量的方法.一些人认为这是一种最佳实践:
http://www.12factor.net/config(它似乎越来越受欢迎).
然后在你的settings.py中: #If you want loud failures,usually the best EMAIL_HOST_USER = os.environ['EMAIL_USERNAME'] EMAIL_HOST_PASSWORD = os.environ['EMAIL_PASSWORD'] #If you want quiet failures,usually not a good idea EMAIL_HOST_USER = os.environ.get('EMAIL_USERNAME',None) EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_PASSWORD',None) 如何设置环境变量取决于您的设置,但通常非常简单. 这种方法的优点是可以将秘密保存在git仓库中,因此您可以向项目中添加新的协作者,而无需担心他们将接管您的AWS / email / etc帐户 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |