SQL注入
解决方法
通过拦截过滤的方式,示例代码如下
//SQL注入效验
public static boolean sqlValidate(String str) {
str = str.toLowerCase();//统一转为小写
String badStr = "'|select|update|and|or|delete|insert|truncate|char|into|iframe|href|script|activex|html|flash"
+ "|substr|declare|exec|master|drop|execute|"
+ "union|;|--|+|,|like|%|#|*|<|>|$|@|\"|http|cr|lf|<|>|(|)";//过滤掉的sql关键字,可以手动添加
String[] badStrs = badStr.split("\\|");
for (int i = 0; i < badStrs.length; i++) {
if (str.indexOf(badStrs[i]) >= 0) {
return true;
}
}
return false;
}
跨站脚本攻击
解决方法
拦截过滤
不安全的HTTP methods
解决方法
关闭PUT、DELETE、TRACE、PATCH方法
URL重定向
解决方法
过滤——白名单
用户名枚举
解决方法
系统提示“用户名不存在”,攻击方通过枚举推算出用户名
修改:模糊提示——用户名或密码错误
信息泄露
shiro反序列化
解决方法
升级版本1.2.5以上
修改默认key