【问题标题】:Why is Django a 'less secure' app according to Google?为什么根据 Google 的说法,Django 是一个“不太安全”的应用程序?
【发布时间】:2020-08-09 12:45:40
【问题描述】:

为什么 Google 认为通过 SMTP (smtp.gmail.com) 发送电子邮件的请求 from my Django app 不安全?阅读他们的security standards 不是很有帮助:

更安全的应用如何帮助保护您的帐户当第三方应用 符合我们的安全标准,您可以:

先查看您为应用授予的帐户访问权限级别 连接您的 Google 帐户 让应用仅访问 您的 Google 帐户,例如您的电子邮件或日历 连接您的 Google 在不暴露您的密码的情况下使用该应用程序断开您的连接 随时通过应用访问 Google 帐户

这是从 Django 发送电子邮件时非常常见的问题。有tutorialsstackoverflow question/answers(第二个答案)通过更改您的谷歌帐户中的设置以允许不太安全的应用程序来“解决”这个问题。在我从Control Access to Less Secure Sites 读到这篇文章之前,我一直在工作并且对它没问题:

因为 Google 开始关闭 Google 帐户的访问权限 安全应用程序,强制选项不再可用。我们 建议立即关闭不太安全的应用程序访问。你应该开始 使用安全性较低的应用程序的替代品。

随着 Google 逐渐不再允许不太安全的应用 访问 Google 帐户,您将收到有关以下内容的电子邮件通知 影响您的变化。

当我尝试搜索“如何使用 Google 确保 Django 安全”或“为什么 Django 对 Google 显示为不安全的应用程序”时,我看到的结果反映了更多相同的指导:只需拨动开关以允许不安全的应用程序在您的谷歌帐户。我想知道为什么 Django 被认为是不安全的,以便也许我可以将其配置为安全的。

编辑:我还没有验证这些步骤是否使 Django 成为“更安全的应用程序”。在此之前using an app password 允许我关闭“允许不太安全的应用程序”。实现起来非常简单。

【问题讨论】:

    标签: python django email gmail google-workspace


    【解决方案1】:

    并不是说 Django 不安全,这可能是您使用 SMTP 发送电子邮件的方式。启用 TLS 是第一件事,也是使用 Google 的 SMTP 服务的必要条件:

    EMAIL_USE_TLS = True
    EMAIL_PORT = 587
    

    端口号取决于您使用的 SMTP 服务。 587 是标准,但它可能是别的东西。

    接下来是设置SPFDKIM

    亚马逊的SES(简单电子邮件服务,不是免费的)使这几乎透明。

    此外,您还可以设置DMARC,它会提供有关设置有效性的反馈。

    有一个适用于 Django 的 DKIM 包:https://pypi.org/project/django-dkim/ 可帮助您手动设置。

    此外,还有一个适用于 Django 2 和 Python 3 的 DMARC 包:https://pypi.org/project/django-dmarc2/(我对原始包进行了一些修复以使其与 Django 2+ 兼容)

    应该在您的 DNS 上设置 SPF。

    有了这个,应该可以确保您的电子邮件安全。

    【讨论】:

    • 谢谢!我将尝试这些,看看它们是否让谷歌关注的事情变得“安全”。所以在我标记这个“正确”之前可能需要一段时间。我开始了,TLS 与 Django - 它只是更新这些设置:codingforentrepreneurs.com/blog/ssltls-settings-for-django - 如果是这样,可能包括在你的答案中。
    • 不,这些是用于在 HTTPS 下运行您的网站。您推荐的article 已经解释了如何在您的电子邮件中使用 TLS:EMAIL_USE_TLS = True。我只提到它,因为有时我仍然会收到来自不使用 TLS 的知名组织的电子邮件。
    • SPF 记录旨在验证电子邮件的来源到您的域,这不是 OP 所要求的完全。以“不太安全”的方式发送邮件只是意味着使用密码而不是 OAuth 令牌进行身份验证,这是应用程序到应用程序身份验证的现代方式,您可以随意通过令牌撤回访问权限。谷歌真的应该像它的云平台一样为 gmail 服务提供令牌生成,而 Django 应该支持这一点。
    • 仅供参考developers.google.com/gmail/imap/xoauth2-protocol。所以谷歌已经在 gmail SMTP 上支持 oAuth(就像微软一样,顺便说一句)。
    猜你喜欢
    • 2018-05-07
    • 2014-09-29
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-24
    相关资源
    最近更新 更多