- Securing Django Admin login with OTP (2 Factor Authentication)
- 为 Django 项目设置 2 因素身份验证
- Python3实现
- 创建 TOTP 设备 -
- 设置管理员 OTP 类 –
- Python3实现
- 输出-
- Python3实现
Securing Django Admin login with OTP (2 Factor Authentication)
在为我们的应用程序添加安全性时,多因素身份验证是最基本的原则之一。在本教程中,我们将使用 OTP 方法添加多因素身份验证。 本文是 Django 中博客 CMS 项目的延续。在这里查看 - 使用 Django 构建博客 CMS(内容管理系统)
为 Django 项目设置 2 因素身份验证
我们将为我们的博客 CMS 安装 TOTP 包,这将为我们的管理员登录添加 OTP 安全性。先安装django-otp包
pip install django-otp
并在我们安装的应用程序中添加“django_otp, django_otp.plugins.otp_totp”,在设置文件的中间件部分添加 django_otp.middleware.OTPMiddleware。
Python3实现
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_otp',
'django_otp.plugins.otp_totp'
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django_otp.middleware.OTPMiddleware'
]
现在运行,
# migrate our app
python3 manage.py migrate
创建 TOTP 设备 -
现在登录 django admin 来创建一个 TOTP 设备。登录后就可以看到了
登录页面
点击添加并填写详细信息以创建新的TOTP qrcode
添加 TOTP 设备
现在再次进入 totp 设备部分并打开二维码并使用您的 TOTP 应用程序(如 Authy、Google Authenticator 应用程序)扫描它。
扫描二维码
设置管理员 OTP 类 –
现在进入 gfgblog 中的 django urls.py 文件,而不是博客 urls.py 并添加行
Python3实现
from django_otp.admin import OTPAdminSite
admin.site.__class__ = OTPAdminSite
输出-
现在注销并登录 django admin,每次需要登录 django admin 时都需要输入 OTP。
使用 OTP 的 django 管理员
需要遵循的一些基本安全原则
- 在生产环境中保持 Debug = False
- 限制允许托管到我们的服务器 IP、本地主机和主机名
- 保持密钥安全可靠
- 所有方式都在生产环境中使用 HTTPS
- 如果由多个用户管理,请检查用户上传
- 保持数据库安全,不要在生产环境中使用 SQLite
- 尝试在生产中使用安全和内容标头,下面给出了一些标头,将它们添加到 Settings.py 中
Python3实现
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
SESSION_COOKIE_SECURE = True
SECURE_BROWSER_XSS_FILTER = True
SECURE_HSTS_SECONDS = 31536000
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True
SECURE_CONTENT_TYPE_NOSNIFF = True
CSRF_COOKIE_SECURE = True
注:本文由VeryToolz翻译自 Securing Django Admin login with OTP (2 Factor Authentication) ,非经特殊声明,文中代码和图片版权归原作者 kushwanthreddy所有,本译文的传播和使用请遵循“署名-相同方式共享 4.0 国际 (CC BY-SA 4.0)”协议。