当前位置: 首页 > 知识库问答 >
问题:

根据谷歌的说法,为什么Django是一个“不太安全”的应用程序?

赵骏奇
2023-03-14

为什么谷歌认为我的Django应用程序请求通过SMTP(SMTP.gmail.com)发送电子邮件是不安全的?阅读他们的安全标准并没有多大帮助:

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

在连接Google帐户之前,请查看您对应用程序的帐户访问级别允许应用程序仅访问您Google帐户的相关部分,如您的电子邮件或日历将您的Google帐户连接到应用程序,而不暴露您的密码随时断开您的Google帐户与应用程序的连接

这是Django在发送电子邮件时经常遇到的问题。有教程和stackoverflow问答(第二个答案)可以通过更改您的google帐户中的设置来允许不太安全的应用程序来“解决”这个问题。在我从对不太安全的站点的控制访问中读到这篇文章之前,我一直认为这是可行的:

由于Google开始关闭对不太安全的应用程序的Google帐户访问,因此不再提供强制执行选项。我们建议立即关闭不太安全的应用程序访问。您应该开始使用不太安全的应用程序的替代品。

随着谷歌逐渐不再允许不太安全的应用程序访问谷歌账户,您将收到有关影响您的更改的电子邮件通知。

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

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

共有1个答案

籍永安
2023-03-14

并不是Django不安全,这可能是您使用SMTP发送电子邮件的方式。启用TLS是要做的第一件事,也是使用谷歌SMTP服务的一项要求:

EMAIL_USE_TLS = True
EMAIL_PORT = 587

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

接下来是设置SPF和DKIM。

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

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

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

此外,还有一个Django 2和Python 3的DMARC包:html" target="_blank">https://pypi.org/project/django-dmarc2/(我对原始包进行了一些修复,使其与Django 2兼容)

SPF应该在您的DNS上设置。

有了这个,你的电子邮件应该是安全的。

 类似资料:
  • 因此,自5月31日以来,谷歌已经禁用了“不太安全的应用程序”选项,因此我一直在使用Java mail API,而且自从更新以来,我再也不能使用Gmail smtp发送电子邮件了。 这是我遇到的错误: 我切换到outlook邮件,它似乎工作正常,但我想知道是否有办法使用Gmail帐户 不太安全的应用程序

  • 这是原始查询: 原始查询的输出。请检查列H,该列有空单元格。 我试图使用以下公式对原始查询进行子查询: =QUERY(QUERY(IMPORTRANGE(“sheet_name”,“social media posts!a:as”),“选择Col1,Col14,Col12,Col10,Col23,Col16,Col13,Col37,Col2,Col3其中Col2='instagram'”,1),“

  • 问题内容: 请用代码示例说明为什么SimpleDateFormat不是线程安全的。这节课有什么问题? 是SimpleDateFormat的格式功能问题吗?请提供一个在课堂上演示此错误的代码。 FastDateFormat是线程安全的。为什么?SimpleDateFormat和FastDateFormat有什么区别? 请用代码说明这个问题? 问题答案: 将中间结果存储在实例字段中。因此,如果两个线程

  • 在开发过程中,我们在NodeEmailer中使用Gmail凭据发送测试电子邮件。我们今天尝试发送一个与昨天配置相同的,但收到以下错误: 我做了一些研究,发现我应该打开“不太安全的应用程序”,但我找不到设置。 当我访问时https://myaccount.google.com/lesssecureapps,我得到“无法读取设置”

  • 问题内容: https://github.com/xetorthio/jedis/wiki/入门 在多线程环境中使用Jedis 您不应该使用来自不同线程的相同实例,因为您会遇到奇怪的错误。有时创建大量的Jedis实例还不够好,因为这意味着大量的套接字和连接,这也会导致奇怪的错误。 单个Jedis实例不是线程安全的 !为避免这些问题,应使用JedisPool,它是网络连接的线程安全池。给定完成后将J

  • 是否(至少是当前版本)endpoint只用于那些用户是Google用户或API是开放的移动应用程序?还是我错过了什么?