nginx黑名单和django限速,最简单的防恶意请求方法分享


Posted in Python onAugust 09, 2019

django项目遭遇cc攻击,不要惊慌,这里推荐两招简单实用的技巧。

项目Nginx作为http接入层,分发到django应用,启动10个uwsgi worker。

今日突然发现,网页打开卡顿,打开server一看,cpu100%。

nginx黑名单和django限速,最简单的防恶意请求方法分享

打开uwsgi的log,发现某一个IP进行了大量的请求,占用了worker。

这里总结下两种解决方法:

1.设置nginx黑名单

vi blockip.conf创建文件,输入:

deny x.x.x.x;

编辑nginx.conf, 在http{}内添加:

include blockip.conf;

验证配置:

[root@server nginx]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重启nginx:

nginx -s reload

2.django内添加middleware

RequestBlockingMiddleware.py

import time
from django.core.exceptions import PermissionDenied
 
from django.utils.deprecation import MiddlewareMixin
MAX_REQUEST_PER_SECOND=2 #每秒访问次数
class RequestBlockingMiddleware(MiddlewareMixin):
  def process_request(self,request):
     now=time.time()
     request_queue = request.session.get('request_queue',[])
     if len(request_queue) < MAX_REQUEST_PER_SECOND:
       request_queue.append(now)
       request.session['request_queue']=request_queue
     else:
       time0=request_queue[0]
     if (now-time0)<1:
       raise PermissionDenied('Forbidden user agent')
     request_queue.append(time.time())
     request.session['request_queue']=request_queue[1:]

setting.py中注册:

MIDDLEWARE = [
 'django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'common.middleware.RequestBlockingMiddleware', #在sessions之后,auth之前
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

不足100行代码,log里再也没有对方的IP出现,相信对方正在某个小黑屋的电脑前气得跺脚吧

以上这篇nginx黑名单和django限速,最简单的防恶意请求方法分享就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Swift 3.0在集合类数据结构上的一些新变化总结
Jul 11 Python
Python文件与文件夹常见基本操作总结
Sep 19 Python
Python日期的加减等操作的示例
Aug 15 Python
利用Python爬取微博数据生成词云图片实例代码
Aug 31 Python
对Python协程之异步同步的区别详解
Feb 19 Python
Python3.5集合及其常见运算实例详解
May 01 Python
Python面向对象之类和实例用法分析
Jun 08 Python
在cmd中查看python的安装路径方法
Jul 03 Python
Django Session和Cookie分别实现记住用户登录状态操作
Jul 02 Python
python3 中使用urllib问题以及urllib详解
Aug 03 Python
pandas使用函数批量处理数据(map、apply、applymap)
Nov 27 Python
PyQt5爬取12306车票信息程序的实现
May 14 Python
python selenium爬取斗鱼所有直播房间信息过程详解
Aug 09 #Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
Aug 09 #Python
基于python二叉树的构造和打印例子
Aug 09 #Python
Python re 模块findall() 函数返回值展现方式解析
Aug 09 #Python
Django ORM 自定义 char 类型字段解析
Aug 09 #Python
解决使用export_graphviz可视化树报错的问题
Aug 09 #Python
Django中自定义admin Xadmin的实现代码
Aug 09 #Python
You might like
咖啡历史、消费和行业趋势
2021/03/03 咖啡文化
php通用防注入程序 推荐
2011/02/26 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
php更新修改excel中的内容实例代码
2014/02/26 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
2014/10/20 PHP
PHP中使用curl伪造IP的简单方法
2015/08/07 PHP
学习PHP的数组总结【经验】
2016/05/05 PHP
php使用glob函数遍历文件和目录详解
2016/09/23 PHP
用 javascript 实现的点击复制代码
2007/03/24 Javascript
使用JQUERY进行后台页面布局控制DIV实现左右式
2014/01/07 Javascript
浅谈关于JavaScript API设计的一些建议和准则
2015/06/24 Javascript
JS基于Mootools实现的个性菜单效果代码
2015/10/21 Javascript
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
jQuery实现点击自身以外区域关闭弹出层功能完整示例【改进版】
2018/07/31 jQuery
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
使用webpack构建应用的方法步骤
2019/03/04 Javascript
深入理解Node内建模块和对象
2019/03/12 Javascript
Vue安装浏览器开发工具的步骤详解
2019/05/12 Javascript
vue项目中引入Sass实例方法
2019/08/27 Javascript
ES6 proxy和reflect的使用方法与应用实例分析
2020/02/15 Javascript
[01:48]2018DOTA2亚洲邀请赛主赛事第二日五佳镜头 VG完美团战逆转TNC
2018/04/05 DOTA
python进阶教程之异常处理
2014/08/30 Python
创建Django项目图文实例详解
2019/06/06 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
2021/01/05 Python
HTML5边玩边学(2)基础绘图实现方法
2010/09/21 HTML / CSS
html5 canvas绘制网络字体的常用方法
2019/08/26 HTML / CSS
Lentiamo荷兰:在线订购隐形眼镜、隐形眼镜液和太阳镜
2019/10/25 全球购物
如何在Oracle中查看各个表、表空间占用空间的大小
2015/10/31 面试题
师范生自荐信范文
2013/10/06 职场文书
音乐教学随笔感言
2014/02/19 职场文书
广告传媒专业应届生求职信
2014/03/01 职场文书
竞选学习委员演讲稿
2014/04/28 职场文书
干部作风整顿自我剖析材料和整改措施
2014/09/18 职场文书
租赁协议书
2015/01/27 职场文书