当前位置: 首页 > news >正文

服务器被爬虫恶意攻击怎么办?

 

在有预算的情况可以采购第三方服务防火墙,没钱就使用开源的WAF进行防护。

# WAF防火墙的基本防护原理
WAF(Web 应用防火墙)可以使用多种技术来防止恶意爬虫攻击,例如:

1. 黑名单:WAF 可以使用黑名单技术来过滤恶意爬虫的请求。黑名单中包含一些已知的爬虫用户代理(User-Agent),WAF 可以检查每个请求的用户代理,并拒绝那些与黑名单匹配的请求。

2. 限制访问频率:WAF 可以使用限制访问频率的技术来防止恶意爬虫攻击。例如,可以设置每个 IP 地址在一定时间内只能访问网站的某个页面一定次数。如果超过了访问次数限制,则 WAF 会拒绝该 IP 地址的请求。

3. JavaScript 检测:WAF 可以使用 JavaScript 检测技术来检测爬虫。例如,可以在页面中嵌入一些 JavaScript 代码,这些代码会检测浏览器的一些属性(如是否支持 JavaScript、是否支持 Cookie 等),如果检测到浏览器属性与正常用户不同,则 WAF 可以认为该请求来自恶意爬虫,从而拒绝该请求。

4. 隐藏字段:WAF 可以在页面中添加一些隐藏的字段,这些字段只有正常用户才会填写,而恶意爬虫往往无法正确填写这些字段。例如,可以在登录表单中添加一个隐藏字段(如 CSRF Token),如果该字段的值不正确,则 WAF 可以认为该请求来自恶意爬虫,从而拒绝该请求。

5. 图片验证码:WAF 可以使用图片验证码技术来防止恶意爬虫攻击。例如,可以在某些敏感操作(如注册、登录、发表评论等)前,要求用户输入验证码。如果 WAF 发现多次输入错误验证码的请求,则可以认为该请求来自恶意爬虫,从而拒绝该请求。

# 使用注意事项
 关于 WAF 的具体使用方法,常见的开源 WAF 包括 ModSecurity、Naxsi、WebKnight 等。这些 WAF 都可以通过配置文件来设置规则,过滤恶意请求。一般来说,使用 WAF 的步骤如下:

1. 安装 WAF:根据 WAF 的安装说明,安装 WAF 并将其集成到 Web 服务器中。

2. 配置规则:编辑 WAF 的配置文件,设置需要过滤的请求规则,例如黑名单、访问频率限制等。

3. 测试 WAF:启动 Web 服务器,并针对一些已知的恶意请求进行测试,验证 WAF 是否能够正确过滤这些请求。

4. 持续维护:WAF 的规则需要根据实际情况不断更新和维护,以保证其能够有效地防止恶意攻击。

# 开源WAF的优缺点
ModSecurity、Naxsi、WebKnight 都是常见的开源 WAF,它们各有优缺点。

1. ModSecurity

优点:

- 可以通过自定义规则来检测和防止各种攻击,包括 SQL 注入、XSS 攻击、命令注入、文件包含等。
- 支持正则表达式,可以灵活地匹配和过滤请求。
- 支持 HTTP/2 和 WebSocket 协议。
- 有一个活跃的社区,提供了丰富的文档和示例代码。
- 可以与 Apache、Nginx、IIS 等常见的 Web 服务器集成。

缺点:

- 学习曲线较陡峭,需要一定的安全知识和经验。
- 配置复杂,需要仔细调整规则以避免误报和漏报。
- 对于高并发的 Web 应用,可能会对性能产生一定的影响。

2. Naxsi

优点:

- 专门针对 Web 应用安全的防火墙,易于使用和配置。
- 通过学习模式(Learning Mode)和白名单模式(Whitelist Mode)来防止误报。
- 支持自定义规则,可以根据实际需求进行扩展。
- 对于高并发的 Web 应用,性能表现较好。

缺点:

- 仅支持 Nginx Web 服务器。
- 防护能力相对较弱,只能检测和防止一些常见的攻击,如 SQL 注入、XSS 攻击等。
- 社区活跃度不高,文档相对较少。

3. WebKnight

优点:

- 支持多种 Web 服务器,包括 IIS、Apache、Tomcat 等。
- 可以通过自定义规则来检测和防止各种攻击,包括 SQL 注入、XSS 攻击、命令注入等。
- 支持正则表达式,可以灵活地匹配和过滤请求。
- 有一个活跃的社区,提供了较为详细的文档和示例代码。

缺点:

- 学习曲线较陡峭,需要一定的安全知识和经验。
- 配置较为复杂,需要仔细调整规则以避免误报和漏报。
- 对于高并发的 Web 应用,可能会对性能产生一定的影响。

总的来说,选择哪种 WAF 主要取决于实际需求和应用场景。如果需要防范多种攻击,并且具备一定的安全知识和经验,可以选择 ModSecurity;如果需要一个易于使用和配置的 WAF,并且仅需要防范一些常见的攻击,可以选择 Naxsi;如果需要一个支持多种 Web 服务器的 WAF,并且对性能要求较高,可以选择 WebKnight。

需要注意的是,WAF 并不能完全防止恶意爬虫攻击,因为恶意攻击者可以使用各种技术来规避 WAF 的过滤。因此,在使用 WAF 的同时,还需要采取其他措施来增强网站的安全性,例如使用 SSL/TLS 加密技术、限制敏感操作的访问、使用验证码等。

相关文章:

服务器被爬虫恶意攻击怎么办?

在有预算的情况可以采购第三方服务防火墙,没钱就使用开源的WAF进行防护。 # WAF防火墙的基本防护原理 WAF(Web 应用防火墙)可以使用多种技术来防止恶意爬虫攻击,例如: 1. 黑名单:WAF 可以使用黑名单技术来…...

JavaScript正则表达式之座机号/手机号验证校验规则

引用:https://www.bilibili.com/read/cv18300539/ 本文对利用正则表达式对手机号码进行了验证 支持格式: 座机 :xxx-xxxxxxxx、xxxxxxxxxxxx …座机区号的横杠可有可无 手机:xxxxxxxxxxx JavaScript: var: checkPhone (rule,…...

黑客学习手册(自学网络安全)

一、首先,什么是黑客? 黑客泛指IT技术主攻渗透窃取攻击技术的电脑高手,现阶段黑客所需要掌握的远远不止这些。 二、为什么要学习黑客技术? 其实,网络信息空间安全已经成为海陆空之外的第四大战场,除了国…...

获取非叶子节点的grad(retain_grad()、hook)【为了解决grad值是None的问题】

在调试过程中, 有时候我们需要对中间变量梯度进行监控, 以确保网络的有效性, 这个时候我们需要打印出非叶节点的梯度, 为了实现这个目的, 我们可以通过两种手段进行, 分别是: retain_grad()hook 不过我感觉“hook”比“retain_grad()”要麻烦.....,所以我感觉还是…...

JMeter(八):响应断言详解

响应断言 :对服务器的响应进行断言校验 (1)应用范围: main sample and sub sample, main sample only , sub-sample only , jmeter variable 关于应用范围,我们大多数勾选“main sample only” 就足够了,因为我们一个请求,实质上只有一个请求。但是当我们发一个请求时,…...

【网络编程】IO复用的应用一:非阻塞connect

在connect连接中,若socket以非阻塞的方式进行连接,则系统内设置的TCP三次握手超时时间为0,所以它不会等待TCP三次握手完成,直接返回,错误为EINPROGRESS。   所以,我们可以通过判断connect时返回的错误码是…...

Spring注解开发,bean的作用范围及生命周期、Spring注解开发依赖注入

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaweb 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 Spring注解开发 一、注解开发定义Bean二、纯注解开发Bean三…...

C#设计模式之---原型模式

原型模式(Prototype Pattern) 原型模式(Prototype Pattern) 是用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种创建型设计模式。也就是用一个已经创建的实例作为原型,通过…...

STM32入门学习之外部中断

1.STM32的IO口可以作为外部中断输入口。本文通过按键按下作为外部中断的输入,点亮LED灯。在STM32的19个外部中断中,0-15为外部IO口的中断输入口。STM32的引脚分别对应着0-15的外部中断线。比如,外部中断线0对应着GPIOA.0-GPIOG.0,…...

Jenkins 配置maven和jdk

前提:服务器已经安装maven和jdk 一、在Jenkins中添加全局变量 系统管理–>系统配置–>全局属性–>环境变量 添加三个全局变量 JAVA_HOME、MAVEN_HOME、PATH 二、配置maven 系统管理–>全局工具配置–>maven–>新增 新增配置 三、配置JDK 在系统管…...

Leetcode | Binary search | 22. 74. 162. 33. 34. 153.

22. Generate Parentheses 要意识到只要还有左括号,就可以放到path里。只要右括号数量小于左括号,也可以放进去。就是valid的组合。recurse两次 74. Search a 2D Matrix 看成sorted list就好。直接用m*n表示最后一位的index,并且每次只需要 …...

生命在于折腾——面试问题汇总

这里面的问题都是我参加面试时候遇到的问题,大家就这样看吧。 一、个人情况 1、自我介绍 2、为什么离开上一家公司 3、有没有参加过HVV 4、介绍一下上家公司的项目 5、小程序和公众号渗透测试做过么 6、实习工资多少 7、有挖过漏洞么 二、基础知识 1、信息收集的…...

<Java>Map<String,Object>中解析Object类型数据为数组格式

背景&#xff1a; 前端&#xff1a;入参为字符串和数组类型&#xff1b;通过json字符串传给后台&#xff0c; 后台&#xff1a;后台通过工具解析为Map<String&#xff0c;Object>&#xff0c;然后需要解析出Map里面的数组值做操作&#xff1b; 需求&#xff1a; 入参&…...

别再分库分表了,试试TiDB!

什么是NewSQL 传统SQL的问题 升级服务器硬件 数据分片 NoSQL 的问题 优点 缺点 NewSQL 特性 NewSQL 的主要特性 三种SQL的对比 TiDB怎么来的 TiDB社区版和企业版 TIDB核心特性 水平弹性扩展 分布式事务支持 金融级高可用 实时 HTAP 云原生的分布式数据库 高度兼…...

Java进阶之Dump文件初体验

视频地址&#xff1a;https://www.bilibili.com/video/BV1Ak4y137oh 学习文章&#xff1a;https://d9bp4nr5ye.feishu.cn/wiki/VQoAwlzrXiLFZekuLIyc1uK5nqc 最近线上频繁的内存告警&#xff0c;同事A通过分析dump文件解决了这个问题&#xff0c;我当然是不会放过这种学习的机…...

基于扩展(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

曲线拟合(MATLAB拟合工具箱)位置前馈量计算(压力闭环控制应用)

利用PLC进行压力闭环控制的项目背景介绍请查看下面文章链接,这里不再赘述。 信捷PLC压力闭环控制应用(C语言完整PD、PID源代码)_RXXW_Dor的博客-CSDN博客闭环控制的系列文章,可以查看PID专栏的的系列文章,链接如下:张力控制之速度闭环(速度前馈量计算)_RXXW_Dor的博客-CSD…...

小程序使用echarts

参考文档&#xff1a;echarts官网、echarts-for-weixin 第一步引入组件库&#xff0c;可直接从echarts-for-weixin下载&#xff0c;也可以从echarts官网自定义生成&#xff0c;这里我们就不贴了组件库引入好后&#xff0c;就是页面引用啦&#xff0c;废话不多说&#xff0c;直…...

面向对象——封装

C面向对象的三大特性为&#xff1a;封装、继承、多态 C认为万事万物都皆为对象&#xff0c;对象上有其属性和行为 例如&#xff1a; ​ 人可以作为对象&#xff0c;属性有姓名、年龄、身高、体重…&#xff0c;行为有走、跑、跳、吃饭、唱歌… ​ 车也可以作为对象&#xf…...

【LeetCode】160.相交链表

题目 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返回结…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...