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), ...);
}

2020-10-15 20:36

参考
https://my.oschina.net/jfinal/blog/353062

2020-10-15 19:03

添加配置:
// 4.6 之前的版本的配置方式: me.setProxyFactory(new CglibProxyFactory());
me.setToCglibProxyFactory(); // 4.6 版本新增配置方式

这里有文档:
https://jfinal.com/doc/4-8

可能的原因是被代理的类中有一些比较复杂的泛型无法被代理

2020-10-15 18:30

先用 mvn clean install 将一些依赖的多模块安装到 maven 库,然后在主模块上通过 mvn clean package 打最终的包

第一步或许也并不需要,你直接在主模块上 mvn clean package 试一试

2020-10-15 16:57

@alldzz 已添加: https://gitee.com/jfinal/jfinal/commit/ae947ec9603cc97979259ff28befb37a2a7af63d

2020-10-15 16:01

@nnana 用 winrar 打开 jar 包,看主类的 .class 文件是不是真的存在,深入到细节,看现场

这种打包部署方式用了两年了,一定可以的,你碰到的很可能仍然是一个细心的问题

如果还是不能解决,下载官网首页的 jfinal-demo-for-maven.zip,使用里面的那两个脚本去修改,以防你自己手头的脚本已经被破坏

2020-10-15 15:39

@alldzz 将缓存起来的 kv 值清掉,然后新进入的值都是新版本 kv 序列化以后的结果就可以解决

jfinal 这边可以为 Kv 添加 serialVersionUID,但添加这个东东代码稍稍难看点

2020-10-15 15:36

修改 jfinal.sh 中的 MAIN_CLASS 配置,要注意大小写问题以及包名要对

文档提供了有关脚本问题:
https://jfinal.com/doc/1-5
注意看第 7 部分:脚本无法使用问题

2020-10-15 15:03

@itld 用 jfinal undertow 开发比 Tomcat 爽太多了,开发,打包部署一体化

2020-10-15 14:32

通常是 web.xml 配置不对,仔细检查包名、大小写之类的细节

2020-10-15 13:58

@alldzz 统一 serialVersionUID 就能解决这个问题,是一个好办法,这个变量控制序列化与反序列化

2020-10-15 12:54

@haojay 这个可以有,先上一批已经明确的刚需 application

2020-10-15 12:40

Kv 这个类添加过新的方法,从你的提问中看到应该是反序列化的时候出的问题

简单说就是序列化与反序列化使用了不同版本的 Kv,造成了这个异常,可以通过将 serialVersionUID 修改成一样的值来解决,也可以同时升级客户端与服务端的到 jfinal 4.9.02 来解决

还有一个办法是用 HashMap 代替 Kv 的使用

2020-10-14 15:57

上传了几张 demo 图片,图片中的人物都挺漂亮,赏心悦目,开开心心每一天多好

2020-10-14 15:14

@jonesxr 很可能是浏览器私自干的这事,jfinal 内部绝对没干预过,你单步调试一下就知道了