安全岗位面试题更新 2026-08-05

请解释 SQL 注入的概念,并详细说明在开发过程中应采取哪些防御措施来防止此类攻击?

安全意识技术原理SQL

考察说明

考察候选人对 SQL 注入原理的理解及实际防御能力。

回答思路

  1. 【回答框架 1】SQL 注入是一种代码注入攻击,攻击者通过在输入字段中插入恶意 SQL 代码,篡改后台 SQL 语句的结构,从而未授权访问、修改或删除数据库数据。其根本原因是未对用户输入进行充分验证或转义,直接将输入拼接到 SQL 查询字符串中。
  2. 【回答框架 2】防御措施主要包括:使用参数化查询或预编译语句,这是最有效的方法,能确保输入被当作数据处理,而非代码;对用户输入进行严格的验证和过滤,如白名单校验、类型检查;最小化数据库权限,使用专有账号并限制操作范围;避免拼接 SQL,使用 ORM 框架;对错误信息进行封装,不暴露 SQL 细节。
  3. 【回答框架 3】此外,还可在应用层部署 Web 应用防火墙(WAF)进行规则拦截,但 WAF 不能作为唯一防线,需结合代码层防御。同时定期进行安全测试,如代码审查、渗透测试,以及使用安全工具扫描漏洞。
  4. 【关键点 1】SQL 注入因未过滤用户输入而直接拼接 SQL 语句导致。
  5. 【关键点 2】参数化查询或预编译语句是首要防御手段。
  6. 【关键点 3】输入验证、最小权限原则、错误信息隐藏是重要补充。
  7. 【关键点 4】WAF 辅助防御,但不可全依赖。
  8. 【关键点 5】需结合安全测试和开发规范。
  9. 【易错点 1】仅靠输入过滤可能被绕过,如使用编码或注释符。
  10. 【易错点 2】对存储过程的使用也需谨慎,若动态拼接 SQL 仍有风险。
  11. 【易错点 3】误以为只在登录功能需要防护,其他输入点同样可能注入。