很多时候我们都知道,xss,csrf都需要通过我们前台传入的数据,然后再输出到页面,渲染成可执行脚本,导致加载页面即可执行或者被动型的让用户点击各种常用的按钮来触发
脚本效果,所以我们需要严格筛选以及控制过滤数据对象的各个属性字段值,我相信很多人都用validator,但是我感觉这样可订制的灵活性是比较低的,然后我自己就想设计一个可插拔式,可订制的校验器;当我们的普通validator不再满足到数据筛选的时候,可在第二重校验器实现我们的数据过滤
我就不啰嗦为何要设计的背景了,下面我就帖代码说明下自己的设计思路
1.写个总的校验器接口,利用泛型规定返回视图类型,还有校验对象的类型
package com.silvery.plugin.validator;
/**
* 数据校验器接口
*
* @author shadow
*
* @param <R>
* 视图类型
* @param <T>
* 校验对象
*/
public interface FormValidator<R, T> {
public R validate(T t) throws FormValidateException;
}
2.定义一个返回视图的对象
package com.silvery.plugin.validator;
import java.util.Map;
/**
* 数据校验结果视图
*
* @author shadow
*
*/
public class FormValidateResult {
private boolean success; // true=成功;false=失败
privat