加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

django – 如何保护Gmail的应用程序专用密码

发布时间:2020-12-20 13:32:13 所属栏目:Python 来源:网络整理
导读:我们将在接下来的几周内从交换机转换为谷歌托管邮件,我正在试图弄清楚如何设置电子邮件,以便我们可以从 django应用程序内部发送 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'EMAIL_HOST='smtp.gmail.com'EMAIL_HOST_USER='someone@exampl
我们将在接下来的几周内从交换机转换为谷歌托管邮件,我正在试图弄清楚如何设置电子邮件,以便我们可以从 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帐户

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读