用OTP保证Django管理员的登录安全(2因素认证)
在为我们的应用程序添加安全性时,多因素认证是最基本的原则之一。在本教程中,我们将使用OTP方法添加多因素认证。 这篇文章是Django中博客内容管理系统项目的延续。请看这里 – 用Django构建博客内容管理系统
为Django项目设置2因素认证
我们将为我们的博客CMS安装TOTP包,这将为我们的管理员登录添加OTP安全。首先安装django-otp包
pip install django-otp
并在我们安装的应用程序中加入’django_otp, django_otp.plugins.otp_totp’,并在设置文件的中间件部分加入django_otp.middleware.OTPMiddleware。
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管理,创建一个TOTP设备。登录后你可以看到

login page
点击添加并填写细节,创建一个新的TOTP qrcode。

添加TOTP设备
现在再次进入TOTP设备部分,打开二维码,用你的TOTP应用程序如Authy、Google Authenticator应用程序扫描它。

扫描qrcode
设置管理员OTP类别 –
现在进入gfgblog中的django urls.py文件,而不是blog urls.py中,加入以下几行
from django_otp.admin import OTPAdminSite
admin.site.__class__ = OTPAdminSite
输出 –
现在退出并登录到django管理,每次登录到django管理时都要输入OTP。

带OTP的Django管理员
一些需要遵循的基本安全原则
- 在生产中保持Debug = False
- 限制允许托管到我们的服务器IP、localhost和主机名。
- 保持秘密钥匙的牢固和安全
- 在生产中使用HTTPS的所有方式
- 如果被多个用户管理,则对用户的上传进行检查
- 保持你的数据库安全,不要在生产中使用SQLite
- 尝试在生产中使用安全和内容标题,下面给出了一些标题,在Settings.py中添加这些标题
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
极客教程