Django自带的Admin管理后台很方便,但是实际生产环境真的会有挺多安全问题的,在admin的安全防护这方面,我之前就研究实现了给admin加上登录验证码和限流功能,可以参考这篇文章:

不过就在内部使用的话就好很多,因此我们可以通过Django的中间件来实现IP过滤,所以本文中涉及到两个知识点,一个是Django的中间件,另外一个是Python关于IP这种数据结构的处理。

开始进入正题吧~

Django中间件

关于中间件的概念和使用不是本文的重点,请读者自行参阅官方文档,写得很清楚易懂。

首先我们新建一个Python包:middleware,创建一个Python文件admin_secure.py准备编写我们的中间件:

import ipaddress

from django.conf import settings
from django.http.response import HttpResponseForbidden class AdminSecureMiddleware(object):
"""
Admin 安全中间件
用于限制可访问 admin 管理后台的IP段
""" admin_url = f'/{settings.URL_PREFIX}admin' allow_networks = [
ipaddress.ip_network('10.53.0.0/20'),
] allow_addresses = [] @classmethod
def get_allow_addresses(cls):
if len(cls.allow_addresses) > 0:
return cls.allow_addresses for network in cls.allow_networks:
for ip in network:
cls.allow_addresses.append(ip) return cls.allow_addresses def __init__(self, get_response):
self.get_response = get_response def __call__(self, request):
response = self.get_response(request) ip_addr = ipaddress.ip_address(request.META.get('REMOTE_ADDR')) if request.path.startswith(self.admin_url):
if ip_addr not in self.get_allow_addresses():
return HttpResponseForbidden() return response

注意上述代码,可以在allow_networks 中添加运行的IP网段,然后在settings.py中启用这个中间件就可以了。

这里又引出了本文涉及的第二个知识点,就是Python的ipaddress操作。

ipaddress模块

我突然想偷懒一波,哈哈哈哈哈哈~

因为这块真的挺简单的,官网文档是:https://docs.python.org/zh-cn/3/howto/ipaddress.html

大学的计算机网络知识还没还给老师吧(逃~)

参考资料

欢迎交流

我整理了一系列的技术文章和资料,在公众号「程序设计实验室」后台回复 linux、flutter、c#、netcore、android、kotlin、java、python 等可获取相关技术文章和资料,同时有任何问题都可以在公众号后台留言~

Django中间件之实现Admin后台IP白名单的更多相关文章

  1. 第三百七十八节,Django+Xadmin打造上线标准的在线教育平台—django自带的admin后台管理介绍

    第三百七十八节,Django+Xadmin打造上线标准的在线教育平台—django自带的admin后台管理介绍 配置django的admin数据库管理后台 首先urls.py配置数据库后台路由映射,一 ...

  2. 微信公众平台宣布增加接口IP白名单提高安全性

    微信公众平台目前已经发布通知在平台接口调用上为了提高安全性需要添加IP白名单并仅允许白名单IP调用. 目前微信公众平台面向开发者主要提供的开发者ID和开发者密钥,在调用时ID和密钥通过检验即可进行调用 ...

  3. 如何为ASP.NET Core设置客户端IP白名单验证

    原文链接:Client IP safelist for ASP.NET Core 作者:Damien Bowden and Tom Dykstra 译者:Lamond Lu 本篇博文中展示了如何在AS ...

  4. IP白名单

    一.什么是IP白名单 公众平台后台新增了IP白名单功能.通过开发者ID及密码调用获取access_token接口时,需要设置访问来源IP为白名单. IP白名单是指一组IP列表,只有该列表中的IP地址的 ...

  5. IP白名单的实现(PHP)

    有些项目可能会用到一个IP地址的白名单黑名单之类的验证. 比如,只有IP地址在白名单中,才可以访问该系统. 那么此时,白名单的维护,一般是一个文件,里边是一些IP地址(每行一个IP),当然也有的可能是 ...

  6. 对actuator的管理端点进行ip白名单限制(springBoot添加filter)

    在我们的SpringCloud应用中,我们会引入actuator来进行管理和监控我们的应用 常见的有:http://www.cnblogs.com/yangzhilong/p/8378152.html ...

  7. 【云速建站】微信公众平台中维护IP白名单

    [摘要] 介绍获取接入IP白名单的操作步骤 网站后台对接微信公众号.支付等都依赖于白名单,接下来就介绍一下白名单的配置. 1.1      为什么要设置白名单 为了提高公众平台开发者接口调用的安全性, ...

  8. Windows Azure Web Site (14) Azure Web Site IP白名单

    <Windows Azure Platform 系列文章目录> 我们知道,在Azure Cloud Service和Virtual Machine,可以通过Endpoint ACL (Ac ...

  9. 利用CentOS系统IPtables防火墙添加网站IP白名单

    参考博文: 利用CentOS系统IPtables防火墙添加360网站卫士节点IP白名单 centos6.5添加白名单如下: 在防火墙 配置文件中加入白名单  ip -A INPUT -s 183.13 ...

随机推荐

  1. CMMI规范目录结构

  2. PHP实现多继承

    题问php是否支持多继承? 答案:不可以,只支持单继承. 如何实现多继承呢? 答案:可以使用 interface 或 trait 实现 . interface这里我们就不做过多的说明了,它的原理就是一 ...

  3. View Animation 运行原理解析

    Android 平台目前提供了两大类动画,在 Android 3.0 之前,一大类是 View Animation,包括 Tween animation(补间动画),Frame animation(帧 ...

  4. Apache Tomcat目录结构与版本升级

    升级原因: 由于当前操作系统内的tomcat版本过低,存在大量高中危漏洞,存在一定的安全隐患.如下图所示,使用绿盟扫描器进行扫描爆出大量漏洞. 升级思路: 既然决定要升级,那么我觉得首先要做的就是自己 ...

  5. Monster Audio 使用教程(二)效果参数的保存

    点击左上角主菜单按钮,点击[保存]菜单,即可保存当前的所有效果参数. [另存为]菜单,则是把当前参数另存一个名称,然后通过[切换效果]菜单,实现效果的切换.  独立保存单个音轨的效果 点击音轨对应的[ ...

  6. 任务调度中心xxl-job对外接口使用

    xxl-job主要分为调度中心和执行器提供了图像化界面,操作简单上手快,基本实现定时任务自动执行,同时可以针对任务日志进行查看.具体xxl-job可以再github上下载:https://github ...

  7. 前端学习(十二):CSS排版

    进击のpython ***** 前端学习--CSS排版 本节主要介绍网页排版中主要格式化元素属性 帮助开发者把css技术与网页排版紧密联系到一起,来更好的实现网页设计效果 字体属性 字体 在日常工作中 ...

  8. express中post请求模块

    body-parser模块主要解析post接口请求 1.npm install  body-parser  -S 2.server.js中引用 const bodyParser=require('bo ...

  9. linux下快速列出局域网中所有主机名(计算机名)的脚本

    最近有列出局域网中所有主机名的需求(SMB协议里的),但是findsmb命令总是列不全,搜了搜网上也没什么现成的解决方案,于是自己写了个python脚本 脚本会扫描局域网arp表中所有ip,并尝试解析 ...

  10. MacOS下如何设置hosts?

    hosts文件是什么? hosts文件是一个系统文件,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”.当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中 ...