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 相关文章推荐
wxPython窗口中文乱码解决方法
Oct 11 Python
浅谈Python 对象内存占用
Jul 15 Python
django限制匿名用户访问及重定向的方法实例
Feb 07 Python
pygame游戏之旅 添加游戏暂停功能
Nov 21 Python
Python的iOS自动化打包实例代码
Nov 22 Python
PyQt5 对图片进行缩放的实例
Jun 18 Python
Django model 中设置联合约束和联合索引的方法
Aug 06 Python
pytorch 状态字典:state_dict使用详解
Jan 17 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
Mar 10 Python
python中sort sorted reverse reversed函数的区别说明
May 11 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
May 29 Python
Django nginx配置实现过程详解
Sep 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
关于js与php互相传值的介绍
2013/06/25 PHP
smarty内置函数foreach用法实例
2015/01/22 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
2018/08/15 PHP
js实现收缩菜单效果实例代码
2013/10/30 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
JavaScript学习笔记整理_关于表达式和语句
2016/09/19 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
angularJS深拷贝详解
2017/03/23 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
JS中的多态实例详解
2017/10/15 Javascript
浅析为什么a=&quot;abc&quot; 不等于 a=new String(&quot;abc&quot;)
2017/10/25 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
vue+webpack模拟后台数据的示例代码
2018/07/26 Javascript
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
vue双向绑定及观察者模式详解
2019/03/19 Javascript
python获取从命令行输入数字的方法
2015/04/29 Python
Python的Django框架中的数据过滤功能
2015/07/17 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
2016/07/11 Python
50行Python代码实现人脸检测功能
2018/01/23 Python
Python面向对象程序设计示例小结
2019/01/30 Python
Python列表与元组的异同详解
2019/07/02 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
python自带tkinter库实现棋盘覆盖图形界面
2019/07/17 Python
简单介绍一下pyinstaller打包以及安全性的实现
2020/06/02 Python
Pyside2中嵌入Matplotlib的绘图的实现
2021/02/22 Python
几个SQL的面试题
2014/03/08 面试题
配置管理计划的主要内容有哪些
2014/06/20 面试题
新闻专业推荐信范文
2013/11/20 职场文书
《风娃娃》教学反思
2014/04/19 职场文书
教书育人演讲稿
2014/09/11 职场文书
2014年人事行政工作总结
2014/12/03 职场文书
公司地址变更通知
2015/04/25 职场文书
观看《信仰》心得体会
2016/01/15 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS