如何提高Django Admin的安全性?
Django是一个流行的Web框架,以其易用性而闻名。像许多其他Web框架一样,Django配备了许多功能,无需编写大量代码即可使用。Django-admin就是其中一项功能。
自动管理界面是Django最强大的功能之一。它读取模型的元数据,为可信用户创建以模型为中心的界面,以便管理网站上的内容。建议将管理员的使用限制在组织的内部管理工具中。它并非旨在作为完整前端的基础。
管理员提供了许多修改挂钩,但不要完全依赖它们。如果您需要提供更以流程为中心的界面,该界面可以隐藏数据库表和字段的实现细节,那么可能是时候开发您自己的视图了。
下面讨论了一些确保Django项目安全的技巧。
使用安全套接字层 (SSL)
在HTTPS上部署您的项目非常重要。如果没有,当您在公共场所时,其他人可能会从您的Web应用程序收集数据。
将默认的admin URL从/admin/更改为其他名称。如有需要,可在不同的域名中托管admin。
更改上述域名,如下所示。
urlpatterns=[ path(‘/admin/’, admin.site,urls), ]
将上述URL更改为不常见且不易访问或识别的名称。
Urlpatterns=[ path(‘my-special-tts-admin’, admin.site,urls), ]
使用双因素身份验证
当您要求密码加其他内容来验证网站用户的身份时,您就在使用双因素身份验证 (2FA)。需要密码然后向您发送第二个登录代码才能登录的应用程序可能正在使用双因素身份验证 (2FA)。
您可以通过三种方式在您的网站上启用2FA:
通过短信进行2FA,这需要发送登录代码。虽然这比仅仅需要密码更好,但短信很容易被拦截。
通过Google Authenticator之类的应用程序进行双因素身份验证,该应用程序会为您注册的任何服务生成唯一的登录代码。用户需要扫描您网站上的二维码才能将其注册到这些应用程序中。然后,该应用程序将生成一个登录代码,他们可以使用该代码访问您的网站。
使用YubiKey在您的网站上启用2FA是最安全的选择。当您的用户尝试登录时,他们必须拥有一个物理设备(例如YubiKey),他们必须将其插入USB端口。
可以使用**django-two-factor-auth**模块启用上述任何2FA技术。
务必强调需要更强的密码,并确保为管理员页面/站点维护更强的密码。
务必安装django-admin-honeypot。
如果您已将其迁移到新的URL甚至选择在其自己的域名上托管它,请在旧的/admim/URL上安装django-admin-honeypot库,以收集尝试入侵您网站的企图。
当有人尝试登录到您之前的/admin/URL时,django-admin-honeypot会生成一个虚假的管理员登录屏幕并向您的网站管理员发送电子邮件。
django-admin-honeypot生成的电子邮件中将包含攻击者的IP地址,因此,如果您检测到来自同一IP地址的重复登录尝试,您可以限制该地址使用您的网站以提高安全性。
始终确保使用最新版本的Django,因为它包含安全升级和错误修复。
记住您所处的环境和正在使用的环境,可以让您了解生产数据的任何变化。