SQL注入是一种攻击技术,攻击者试图通过在输入中注入恶意的SQL代码来干扰应用程序的数据库查询。为了防止SQL注入,你需要了解可能用于注入的一些常见字符和技术。以下是一些常见的SQL注入字符和技术:
'
:'
来结束 SQL 查询语句中的字符串,然后添加自己的恶意代码。"
:"
来影响查询。;
:;
来执行额外的SQL语句。--
或 /* */
:--
或 /* */
来注释掉原始查询的其余部分,然后添加自己的SQL代码。OR
和 AND
操作符来改变查询的逻辑条件,以便绕过登录认证或获取不应该访问的数据。%
、_
等,以影响 SQL 查询的模糊匹配或通配符匹配。为了防止SQL注入,强烈建议使用参数化查询或预处理语句,以确保用户输入的值不会直接拼接到SQL语句中。这样可以有效地防止注入攻击。此外,进行输入验证和过滤,只允许合法的字符输入,是增加应用程序安全性的另一种重要措施。
public static void filterContent(String[] values) {
String[] xssArr = xssStr.split("\\|");
for (String value : values) {
if (value == null || "".equals(value)) {
return;
}
// 统一转为小写
value = value.toLowerCase();
for (int i = 0; i < xssArr.length; i++) {
if (value.indexOf(xssArr[i]) > -1) {
log.error("请注意,存在SQL注入关键词---> {}", xssArr[i]);
log.error("请注意,值可能存在SQL注入风险!---> {}", value);
throw new RuntimeException("请注意,值可能存在SQL注入风险!--->" + value);
}
}
}
return;
}