Class SqlInjectionChecker
java.lang.Object
tech.riemann.nif.web.sql.SqlInjectionChecker
SQL注入检查器
检查字符串是否包含SQL注入特征
定位声明:本检查器是 WAF 缓解层,基于黑名单启发式, 不能替代参数化查询 / ORM / 预编译语句——SQL 注入的根治方案是参数化查询, 黑名单永远存在绕过可能,请务必将参数化查询作为唯一防线,本功能仅作为纵深防御的补充。
防护策略(双通道检测):
- 解码通道:对 URL 解码后的原始文本执行带词边界(
\b)/空白语义的 关键字与特征匹配——覆盖标准注入形态(INSERT INTO、1 OR 1=1、SLEEP(等) - 规范通道:对去除块注释与全部空白后的粘连文本执行无边界特征匹配——
对抗拆词/空白变形(
SEL/**\/ECT、SEL\nECT、' O R 1 = 1 '等)
已知代价:含独立 SQL 关键字词(如 "create"、"update")的正常业务文本可能被误判为注入, 这是黑名单方案的固有取舍,请通过配置校验开关或参数化查询规避。
- Author:
- Kerbores(kerbores@riemann.tech)
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
SqlInjectionChecker
public SqlInjectionChecker()
-
-
Method Details
-
containsSqlInjection
检查是否包含SQL注入特征双通道检测: 1. 解码通道:注释符 + 关键字 + 特征在 URL 解码后的原文上匹配(词边界/空白语义有效) 2. 规范通道:粘连特征在去注释、去空白后的文本上匹配(对抗拆词/空白变形)
- Parameters:
value- 待检查的字符串- Returns:
- 是否包含SQL注入特征
-