用OTP保证Django管理员的登录安全(2因素认证)

用OTP保证Django管理员的登录安全(2因素认证)

在为我们的应用程序添加安全性时,多因素认证是最基本的原则之一。在本教程中,我们将使用OTP方法添加多因素认证。 这篇文章是Django中博客内容管理系统项目的延续。请看这里 – 用Django构建博客内容管理系统

为Django项目设置2因素认证

我们将为我们的博客CMS安装TOTP包,这将为我们的管理员登录添加OTP安全。首先安装django-otp包

pip install django-otp
Python

并在我们安装的应用程序中加入’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'
]
Python

运行,

# migrate our app
python3 manage.py migrate
Python

创建一个TOTP设备 –

现在登录django管理,创建一个TOTP设备。登录后你可以看到

用OTP保证Django管理员的登录安全(2因素认证)。

login page

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

用OTP保证Django管理员的登录安全(2因素认证)。

添加TOTP设备

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

用OTP保证Django管理员的登录安全(2因素认证)。

扫描qrcode

设置管理员OTP类别 –

现在进入gfgblog中的django urls.py文件,而不是blog urls.py中,加入以下几行

from django_otp.admin import OTPAdminSite
  
admin.site.__class__ = OTPAdminSite
Python

输出 –

现在退出并登录到django管理,每次登录到django管理时都要输入OTP。

用OTP保证Django管理员的登录安全(2因素认证)。

带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
Python

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Django 教程

登录

注册