您可能知道SQL 注入(SQLi) 攻击是最古老、最普遍和最致命的 Web 应用程序漏洞,并且可能知道如何防止利用 SQLi 漏洞的攻击。然而,尽管做出了这些努力,您的 Web 应用程序/网站可能仍容易受到 SQL 盲注(SQLi 漏洞的一种子类型)的攻击。在本文中,我们将深入探讨盲 SQLi 攻击、盲 SQL 注入类型以及如何预防它们。
当后端数据库将攻击者输入的数据解释为 SQL 命令,而不是用户输入的正常数据时,就会发生盲 SQL 注入攻击。通常,攻击者会利用显示一般错误消息的 Web 应用程序,而不会缓解 SQLi 易受攻击的代码。攻击者向此类易受攻击的应用程序的后端数据库询问真假问题,并根据应用程序的响应确定是否存在 SQL 注入。
Blind SQLi 和经典 SQLi 之间的主要区别在于攻击者从后端数据库检索数据的方式。在经典的 SQLi 攻击中,攻击者可以在 Web 应用程序中看到数据库错误或恶意 SQLi 命令的输出。当数据库不显示错误消息或输出恶意命令时,攻击者通过向后端数据库询问一系列正确或错误的问题来窃取数据,并查看应用程序或页面是否正确加载,花费时间来处理 SQL查询或其他此类更改。盲注 SQL 注入耗时且难以利用,但并非不可能,并且会为攻击者产生类似的结果。
前任;
以下申请网址
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 注入攻击,
Microsoft SQL Server 使用“WAIT FOR DELAY '0:0:10''
PostgreSQL 使用 pg_sleep()
盲目 SQLi 攻击的影响
盲目 SQLi 攻击的影响类似于经典的 SQL 注入攻击。它使攻击者可以访问和控制后端数据库服务器。他们能
防止盲目的 SQLi 攻击
需要注意的是,利用盲 SQLi 漏洞所需的技能和工具可能与经典 SQLi 漏洞有很大不同,但针对各种 SQL 注入的预防技术非常相似。很多时候,开发人员在保护 Web 应用程序免受经典 SQLi 漏洞攻击方面缺乏根据、考虑不周和努力薄弱会导致盲目的 SQLi 漏洞。例如,关闭错误报告。
确保安全编码实践
无论您使用什么语言,您使用的编码实践都必须与 OWASP 安全编码指南同步。大多数 Web 开发平台都提供了避免所有 SQL 注入的机制。使用参数化查询而不是动态查询(详情如下)。请记住实施来自所有用户输入字段(评论、联系表等)的特殊字符的白名单。并使用输入编码。
考虑使用数据库层访问 (DAL),因为它使您能够集中处理问题或对象关系映射 (ORM) 系统,因为它们仅使用参数化查询。无论哪种情况,都可以根据这些新库转换所有遗留代码。
使用参数化查询
不惜一切代价避免动态 SQL 查询,而是使用参数化查询。参数化查询是准备好的语句,使您能够有效且稳健地减轻盲目 SQL 注入。因此,找到所有动态 SQL 查询并将它们转换为参数化查询。
全面智能的安全扫描工具必备
使用全面且智能的安全扫描工具,定期扫描您的 Web 应用程序(从开发阶段开始)以识别可能导致 SQLi 攻击的新错误和漏洞。
加入托管且强大的安全解决方案
扫描只能识别差距和漏洞。为了保护您的 Web 应用程序免受这些攻击,需要保护和修补这些漏洞,直到它们被修复。加入强大的托管安全解决方案,如 AppTrana,它提供智能托管 WAF、定期安全审计、渗透测试和认证安全专家的服务,以确保您的应用程序始终安全,免受包括盲 SQLi 在内的漏洞的侵害。