数据库接口之防止sql注入
1、什么是SQL注入(SQL Injection)?
SQL 注入是攻击者把恶意的 SQL 代码(或数据里带有 SQL 控制字符)插入到应用程序构建的数据库查询中,从而改变原有查询逻辑,达到窃取、篡改、删除数据或取得数据库权限的目的。
2、采用防御方法
1. 参数化查询(Prepared Statements)
- 技术: 使用 JdbcTemplate 的参数化查询
- 原理: SQL语句与参数分离,参数通过占位符 ? 传递
- 防护: 防止SQL语法注入,恶意代码被当作数据而非SQL指令
2. 输入验证与过滤(Input Validation & Sanitization)
- 技术: 正则表达式格式验证 ^[a-zA-Z0-9_]+$
- 原理: 白名单机制,只允许标准数据库标识符字符
- 防护: 在应用层拦截包含特殊字符的恶意输入
3. 安全架构设计——多层防护策略(Defense in Depth)
应用层验证 → 参数化查询 → 数据库执行
↓ ↓ ↓
格式检查 参数绑定 安全执行