demo版本自带的文章管理功能,在富文本客户端输入英文内容是,保存时,会提示“表单参数错误”,经验证发现,在保存时,执行XssSqlFilterProcessor中的SQL XSS拦截时判断错误。
protected boolean checkParams(ActionContext ac) {
HttpServletRequest req = ac.getRequest();
Iterator<String[]> values = req.getParameterMap().values().iterator();// 获取所有的表单参数
Iterator<String[]> values2 = req.getParameterMap().values().iterator();// 因为是游标所以要重新获取
boolean isError = false;
String regEx_sql = "select|update|and|or|delete|insert|trancate|char|chr|into|substr|ascii|declare|exec|count|master|drop|execute";
String regEx_xss = "script|iframe";
关键判断参数regEx_sql ,这些关键字中,and or作为英文常用单词,在英文文章里肯定会出现,但是如果这里去掉这部分SQL校验的话,又不太安全。
想问问这种有没有什么好的解决方案。