JFinal-club 中预防XSS 漏洞的代码在哪

哪位老师可以指导下 jfinal 中如何控制 XSS的, jfinal-club 项目中的 XSS 过滤的代码在哪

评论区

JFinal

2020-10-16 00:03

在 JsoupFilter 之中,这个类里头有一些过滤的方法,然后在 Share、Project、Feedback 以及 ShareReply、FeedbackReply 这五个 Model 中有使用

XSS 防御有很多方案,如果你的系统用户提交的口子比较少的话在 model 中过滤是比较方便的

如果用户提交数据的口子很多的话,可以扩展一个 MyHttpServletRequest ,用它对底层的 request 进行一次包装,也就是内部持有它:
public class MyHttpServletRequest extends HttpServletRequest {
private HttpServletRequest request ;
public MyHttpServletRequest(HttpServletRequest req) {
this.request = req;
}
在这里覆盖一些方法,进行 XSS 过滤操作
}


然后用一个全局拦截器将之替换:
Controller c = inv.getController();
request = new MyHttpServletRequest(c.getRequest());
c.setHttpServletRequest(request);
inv.invoke();

当然,用 Handler 规范会更方便:
void handle(String target, HttpServletRequest req, ...) {
next.handle(target, new MyHttpServletRequest(req), ...);
}

热门反馈

扫码入社