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 相关文章推荐
Python中SOAP项目的介绍及其在web开发中的应用
Apr 14 Python
Python Matplotlib库入门指南
May 18 Python
Python使用smtp和pop简单收发邮件完整实例
Jan 09 Python
Python返回数组/List长度的实例
Jun 23 Python
python计算列表内各元素的个数实例
Jun 29 Python
Python判断有效的数独算法示例
Feb 23 Python
python批量解压zip文件的方法
Aug 20 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
Dec 11 Python
Python JSON编解码方式原理详解
Jan 20 Python
Python基于os.environ从windows获取环境变量
Jun 09 Python
Python性能测试工具Locust安装及使用
Dec 01 Python
Python urllib request模块发送请求实现过程解析
Dec 10 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
php学习之 认清变量的作用范围
2010/01/26 PHP
php中注册器模式类用法实例分析
2015/11/03 PHP
jQuery实现类似滑动门切换效果的层切换
2013/09/23 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
2013/11/15 Javascript
jQuery计算textarea中文字数(剩余个数)的小程序
2013/11/28 Javascript
使用AngularJS处理单选框和复选框的简单方法
2015/06/19 Javascript
javascript实现超炫的向上滑行菜单实例
2015/08/03 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
概述javascript在Google IE中的调试技巧
2016/11/24 Javascript
JS 设置Cookie 有效期 检测cookie
2017/06/15 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
2017/07/11 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
Angularjs实现数组随机排序的方法
2018/10/02 Javascript
[原创]微信小程序获取网络类型的方法示例
2019/03/01 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
2019/12/16 Javascript
vue axios封装httpjs,接口公用配置拦截操作
2020/08/11 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
2020/11/19 Vue.js
python处理cookie详解
2014/02/07 Python
Python中__call__用法实例
2014/08/29 Python
Python函数参数类型*、**的区别
2015/04/11 Python
python使用append合并两个数组的方法
2015/04/28 Python
浅析Python基础-流程控制
2016/03/18 Python
JS设计模式之责任链模式实例详解
2018/02/03 Python
如何使用VSCode愉快的写Python于调试配置步骤
2018/04/06 Python
python实现简单的文字识别
2018/11/27 Python
Pycharm配置远程调试的方法步骤
2018/12/17 Python
django 信号调度机制详解
2019/07/19 Python
如何使用django的MTV开发模式返回一个网页
2019/07/22 Python
Redbubble法国:由独立艺术家设计的独特产品
2019/01/08 全球购物
教师党员岗位承诺书
2014/05/29 职场文书
小学四年级学生评语
2014/12/26 职场文书
鸡毛信观后感
2015/06/11 职场文书
工作总结之小学教师体育工作范文(3篇)
2019/10/07 职场文书