# 如何防止SQL盲注攻击？

> 来源：梦飞idc云平台 | 原文：https://www.mfisp.com/19397.html | 发布：2023-04-07 | 更新：2023-04-07 | 分类：IDC云库

您可能知道SQL 注入(SQLi) 攻击是最古老、最普遍和最致命的 Web 应用程序漏洞，并且可能知道如何防止利用 SQLi 漏洞的攻击。

您可能知道SQL 注入(SQLi) 攻击是最古老、最普遍和最致命的 Web 应用程序漏洞，并且可能知道如何防止利用 SQLi 漏洞的攻击。然而，尽管做出了这些努力，您的 Web 应用程序/网站可能仍容易受到 SQL 盲注（SQLi 漏洞的一种子类型）的攻击。在本文中，我们将深入探讨盲 SQLi 攻击、盲 SQL 注入类型以及如何预防它们。

 

![什么是SQL，为什么它对公司很重要？](https://www.mfisp.com/wp-content/uploads/2022/06/20220615164312szyelJ.jpg)

 

## 什么是盲 SQL 注入？

 

当后端数据库将攻击者输入的数据解释为 SQL 命令，而不是用户输入的正常数据时，就会发生盲 SQL 注入攻击。通常，攻击者会利用显示一般错误消息的 Web 应用程序，而不会缓解 SQLi 易受攻击的代码。攻击者向此类易受攻击的应用程序的后端数据库询问真假问题，并根据应用程序的响应确定是否存在 SQL 注入。

 

Blind SQLi 和经典 SQLi 之间的主要区别在于攻击者从后端数据库检索数据的方式。在经典的 SQLi 攻击中，攻击者可以在 Web 应用程序中看到数据库错误或恶意 SQLi 命令的输出。当数据库不显示错误消息或输出恶意命令时，攻击者通过向后端数据库询问一系列正确或错误的问题来窃取数据，并查看应用程序或页面是否正确加载，花费时间来处理 SQL查询或其他此类更改。盲注 SQL 注入耗时且难以利用，但并非不可能，并且会为攻击者产生类似的结果。

 

## SQL 盲注类型

 
 
- 基于内容的盲SQLi：在这里，攻击者分析页面加载方式的差异（如果有的话）或页面内容长度的变化；基于攻击者提供的输入 

 

前任;

 

以下申请网址

 

http://www.example.com/item.php?id=2

 

这会将以下内容作为数据库中的请求发送。

 

从 ID = 2 的项目中选择标题、描述、正文

 

然后攻击者将以下内容作为查询注入；

 

http://www.example.com/item.php?id=2 和 1=2

 

结果 SQL 查询是这样的；

 

从 ID = 2 和 1=2 的项目中选择标题、描述、正文

 

上述查询将是一个错误的结果，因此应用程序将不会显示任何数据输出；而在注入真实陈述时；该应用程序将显示一些数据。

 

通过比较收到的输出；可以断定存在 SQL 注入攻击，

 
 
- 基于时间的盲SQLi：在这里，攻击者分析数据库是否在返回结果之前暂停了他/她指定的时间段 

 

Microsoft SQL Server 使用“WAIT FOR DELAY '0:0:10''

 

PostgreSQL 使用 pg_sleep()

 

**盲目 SQLi 攻击的影响**

 

盲目 SQLi 攻击的影响类似于经典的 SQL 注入攻击。它使攻击者可以访问和控制后端数据库服务器。他们能

 
 
- 数据库指纹识别：在使用基于时间的方法的情况下。这有助于数据库指纹识别，并且特定数据库有特定的时间延迟有效负载 
- 窃取敏感的客户和/或商业信息，例如信用卡号、客户/员工的个人信息、专利、IP 等。 
- 从数据库中读取、添加、更新或删除数据或表，或执行管理命令。 
- 获得特权升级，使他们能够完全控制服务器/应用程序/操作系统。 

 

**防止盲目的 SQLi 攻击**

 

需要注意的是，利用盲 SQLi 漏洞所需的技能和工具可能与经典 SQLi 漏洞有很大不同，但针对各种 SQL 注入的预防技术非常相似。很多时候，开发人员在保护 Web 应用程序免受经典 SQLi 漏洞攻击方面缺乏根据、考虑不周和努力薄弱会导致盲目的 SQLi 漏洞。例如，关闭错误报告。

 

**确保安全编码实践**

 

无论您使用什么语言，您使用的编码实践都必须与 OWASP 安全编码指南同步。大多数 Web 开发平台都提供了避免所有 SQL 注入的机制。使用参数化查询而不是动态查询（详情如下）。请记住实施来自所有用户输入字段（评论、联系表等）的特殊字符的白名单。并使用输入编码。

 

考虑使用数据库层访问 (DAL)，因为它使您能够集中处理问题或对象关系映射 (ORM) 系统，因为它们仅使用参数化查询。无论哪种情况，都可以根据这些新库转换所有遗留代码。

 

**使用参数化查询**

 

不惜一切代价避免动态 SQL 查询，而是使用参数化查询。参数化查询是准备好的语句，使您能够有效且稳健地减轻盲目 SQL 注入。因此，找到所有动态 SQL 查询并将它们转换为参数化查询。

 

**全面智能的安全扫描工具必备**

 

使用全面且智能的安全扫描工具，定期扫描您的 Web 应用程序（从开发阶段开始）以识别可能导致 SQLi 攻击的新错误和漏洞。

 

**加入托管且强大的安全解决方案**

 

扫描只能识别差距和漏洞。为了保护您的 Web 应用程序免受这些攻击，需要保护和修补这些漏洞，直到它们被修复。加入强大的托管安全解决方案，如 AppTrana，它提供智能托管 WAF、定期安全审计、渗透测试和认证安全专家的服务，以确保您的应用程序始终安全，免受包括盲 SQLi 在内的漏洞的侵害。

---
本页由 梦飞idc云平台（https://www.mfisp.com）提供。站点导航见 https://www.mfisp.com/llms.txt
