部署之前的Django Web安全清单| 保护您的Django应用

您已经知道Web安全对于防止黑客和网络窃贼访问敏感信息很重要。 因此,在本文中,我们将检查Django安全漏洞以及如何修复它们。

部署清单
首先,请通过以下命令检查您的安全漏洞:

您会看到一些描述,这些描述提供了有关Django Web应用程序漏洞的信息。 尝试搜索这些安全问题,并在生产前修复它们。

Mozilla天文台
如果您已经部署了应用程序,则使用Mozilla站点的Observatory扫描站点的安全状态。 该网站还包括测试您网站其他安全方面的第三方扫描仪。

这是扫描的示例:

跨站点请求伪造(CSRF)保护
在Web应用程序中,基本上,Web表单从用户那里获取输入,并将其发送到服务器端组件以对其进行处理。 服务器端组件通常将服务公开为POST,PUT,DELETE方法,以通过HTTP接受数据。 Django具有针对大多数CSRF威胁的内置安全性,只要您允许并在必要时使用它即可。

如文档中所述,除非绝对必要,否则在使用csrf_exempt装饰器标记视图时要非常小心。

如果某人(通过中间人攻击或xss)可以访问您的csrftoken cookie,则这是一个漏洞。

CSRF保护不能抵御中间人攻击,因此请结合使用HTTPS和HTTP Strict Transport Security(我们将在稍后的文章中讨论)。

设置HTTPS后,请在settings.py中添加以下行

跨站点脚本(XSS)
跨站点脚本(XSS)允许攻击者将脚本注入网站或应用程序的内容。 当用户访问受感染的页面时,脚本将在受害者的浏览器中执行。 这使攻击者可以窃取Cookie,帐户信息等私人信息。

X-XSS-Protection:1; mode = block启用XSS过滤。 如果检测到攻击,浏览器将不呈现页面,而不会清除页面。

要在Django中启用它,请确保django.middleware.security.SecurityMiddleware存在于中间件列表中,并在settings.py中添加以下几行:

Django Admin安全性
最重要的事情之一就是确保Django管理的安全性。 在部署应用程序之前,必须将admin /路径更改为只有您知道的内容。 否则,某人可以轻松地在URL中键入/ admin并访问管理员登录页面。

您可以使用django-admin-honeypot创建虚假的管理员登录页面,如果有人尝试尝试未经授权的访问,它将通知您。

SSL重定向
在settings.py中添加以下行,以强制Django将所有非HTTPS请求重定向到HTTPS。
Nín kěyǐ shǐyòng django-a

内容安全政策(CSP)
如果您的Django应用程序很大,包含许多第三方代码,并且在整个项目中散布着许多内联脚本和样式,则应将CSP添加到您的站点。

有关CSP的更多信息,请访问内容安全策略简介。

Django没有用于创建CSP标头的内置方法,因此您可以安装Mozilla的django-csp模块并使用浏览器的控制台来跟踪代码中的安全违规行为。

安装django-csp后,将以下几行添加到settings.py

因此,基本上,将不再允许所有内联脚本和样式。 所有脚本和样式都必须从资源中加载。 您可以在脚本和样式CSP标头中添加“ unsafe-inline”,但是这会否定整个策略。

从所有这些内联样式和脚本中清除代码非常重要。 但是,您的CSP政策中应允许使用某些外部资源,例如Google跟踪代码管理器或Google Analytics(分析)。 为了实现更新,您的代码是这样的:

有关更多信息,请参阅django-csp文档。

请注意,此配置取决于您使用的外部资源,因此请先阅读文档,然后将更改应用于您的站点。

HTTP严格传输安全
设置此政策后,如果您未正确提供HTTPS资源或证书过期,浏览器将在给定的时间内拒绝连接到您的网站。

将以下几行添加到settings.py

任务完成!
现在您的应用程序几乎是安全的。 另外,您可以使用nmap扫描开放端口,并尝试通过Google搜索如何修复这些开放端口。

如果您喜欢该帖子,请访问Reverse Python并与您的朋友分享!