SQL 注入与防御-第八章:代码层防御
一、防御基础:概述与领域驱动安全
代码层防御的核心目标是从开发源头阻断 SQL 注入,领域驱动的安全(DDS) 是贯穿始终的设计思路:将 “用户名”“密码” 等业务概念显式封装为独立类(如Username
类),在类内部内置校验规则(字符范围、长度限制等),确保输入数据从产生到传递的全流程符合业务规范,从根源上避免非法数据流入数据库。通过 “业务概念显性化 + 安全校验内聚化”,让安全逻辑与业务逻辑深度协同,降低注入风险。
二、核心防御手段一:参数化语句
参数化语句是代码层防御 SQL 注入的基础且最优解,通过 “SQL 指令预编译 + 参数与指令分离”,彻底避免输入数据破坏 SQL 语法结构,数据库仅将参数视为纯数据处理,不解析为 SQL 指令。
(一)多语言与场景实现
1. 服务端语言
-
Java(JDBC):使用
PreparedStatement
预编译 SQL,通过?
占位符标记参数位置,调用setXxx()
方法绑定参数。Stri