首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
JFinal-club 中预防XSS 漏洞的代码在哪
李白一刀
2020-10-15 20:43
哪位老师可以指导下 jfinal 中如何控制 XSS的,
jfinal-club 项目中的 XSS 过滤的代码在哪
项目:
JFinal
3
1
评论区
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), ...);
}
回复
发送
我要反馈
热门反馈
扫码入社
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), ...);
}