强制执行最小权限访问、对用户输入进行净化以及限制数据库程序,都有助于防止 SQL 注入和随之而来的数据泄露。
阅读本文后,您将能够:
相关内容
订阅 TheNET,这是 Cloudflare 每月对互联网上最流行见解的总结!
复制文章链接
结构化查询语言注入 (SQLi) 是一种代码注入攻击,它使攻击者能够检索、操纵或破坏 SQL 数据库中的敏感信息。这些攻击通过在 SQL 查询字段中插入专门的命令来实现;执行这些命令后,它们可能会使攻击者能够伪造合法用户的身份,查看或检索受保护的数据,甚至获得服务器的 root 用户访问权限。
通常情况下,攻击者通过利用应用程序编程接口 (API) 中的漏洞实施 SQLi,而这些接口无法正确区分合法代码和不受信任的代码。由于无法检测被更改的命令或查询,这些 API 可能会被用来执行恶意请求,如绕过 Web 应用程序防火墙 (WAF) 或身份验证措施。
SQLi 通常采用以下三种方法之一执行:
要查看良性和恶意 SQL 查询的实际示例,请阅读什么是 SQL 注入?
虽然 SQL 注入是最普遍的 API 威胁之一,但通过正确的预防策略可以有效避免。预防 SQL 注入的有用方法包括限制数据库过程、净化数据库输入以及强制实施最低权限访问。
SQL 注入主要取决于攻击者操纵数据输入和数据库功能的能力。通过限制这些输入并限制可执行的数据库过程类型,组织可以最大限度地降低未经授权或恶意查询的风险。具体方法包括:
应该对传递给任何 SQL 数据库的用户输入进行定期监控、验证和净化,以消除恶意代码。输入验证可确保数据按照预先确定的标准进行正确检查和格式处理,而输入净化则通过删除无效或不安全的字符并根据需要重新进行格式处理来修改(或“净化”)输入内容。确保输入验证的方法包括:
最低权限访问原则只允许用户访问其角色所需的受保护资源。例如,这可能意味着限制获授予数据库管理员级别权限的用户数量,或者甚至为用户授予临时管理员级别的访问权限,随后可以撤销。
在基于角色的层面上限制用户访问权限也有助于最大限度地减少入侵造成的影响,因为使用窃取的凭据入侵数据库的攻击者在查看、修改、窃取或销毁受保护数据的能力方面也会受到同样的限制。出于同样的原因,组织应限制多个网站和应用程序对数据库的共享访问。
Cloudflare 凭借强大的应用程序和 API 安全产品组合,帮助组织提高抵御 SQLi 攻击的能力: