Skip to main content

SQL 注入

结构化查询语言注入

相关错误

“此服务器易受 SQL 注入攻击。确保输入的 SQL 查询经过验证。”

问题

SQL 注入攻击是网站和 web 应用代码中的一种漏洞。该漏洞导致攻击者可以劫持后端进程,并干扰应用程序向数据库进行的查询。

当来自不受信任的来源的数据进入程序时,就发生了 SQL 注入。这些数据随后会被用于动态构造 SQL 查询。

SQL 攻击成功后,攻击者可以:

  • 不使用密码登录应用程序或网站前端。

  • 访问、修改和删除存储在受安全保护的数据库中的数据。

  • 创建自己的数据库记录或修改现有记录,从而进行其他攻击。

解决方案

防止 SQL 注入攻击的方法:

  1. 使用准备好的语句(和参数化查询)确保安全处理传递到 SQL 语句的参数(输入)。

  2. 将输入数据验证加入允许列表(不列入阻止列表)。不根据阻止列表筛选用户输入。攻击者几乎总是能找到办法绕过列表。如果可能,只使用严格的允许列表确认和筛选用户输入。

  3. 如果无法对输入数据使用参数化查询和验证,则在输入参数中不使用特殊符号。

  4. 强制执行最低权限原则,加强对网站的访问控制,以减少安全威胁:

    • 在系统上使用最低权限组执行操作。

    • 仅在需要执行操作期间提供权限。

    • 不提供对应用程序帐户的管理员访问权限。

    • 最大程度地降低环境中的每个数据集帐户的权限。