2020-10-20 16:42

@四零四 既然被改掉了,是不是 undertow 已经帮你处理完了这个事,不用再操心这事了吧?

2020-10-20 16:41

最好的办法是去掉 @ControllerBind, 因为这个在打包后有问题,要改这个不会耗费太多时间,因为你的 controller 一般不会超过 30 个

还有一个办法是使用 jpress 的路由扫描代码取代 @ControllerBinid

注意,jfinal 官方并未推出路由扫描功能

2020-10-20 16:37

@四零四 我看了看 http host 头攻击的相关资料,这个一般是通过配置 nginx 解决:
https://blog.csdn.net/u012903926/article/details/81702224

根本上来说,如果你的项目中没有使用 request.getHost() 这个值,是不会有害的,如果使用了,就要防一防

在 jfinal 之下,可以通过一个 handler 来处理一下,大致办法如下:
public class HostCheckHandler extends Handler {
static String host = PropKit.get("server.host");

public void handle(String target, HttpServletRequest req, HttpServletResponse res, boolean[] isHandled) {
if ( ! host.equals(req.getHost()) ) {
RenderKit.render404(...);
} else {
next.handle(req, res, isHandled);
}
}
}

注意上面的 host 属性从配置文件中来,你需要事先配置一个 server.host,在开发的时候,你可以配置成 localhost 就可以了

注意解决后来反馈一下

2020-10-20 15:58

要对 SSL 的机制有个大概的了解,不用太深

你要解决 ssl 认证的问题,关键在于 SSLContext 的使用,SSLContext.init(...) 方法的前两个参数 init(KeyManager[] km, TrustManager[] tm),其中:
1:第一个参数是由该应用本身的证书加载而来的
2:第二个参数是该应用可以信任的客户端证书相关的文件加载而来的

我举个例子,你的 jfinal undertow 项目,默认是信任所有客户端的,所以第二个参数为 null。

当第二个参数为是 null 的时候,在客户端发起请求的时候就会根据这个参数来验证客户端是不是可以访问

2020-10-20 15:50

应该是有一个 Handler 对 url 做了转换,好让 url 能更短一些

你找找这个 Handler

此外,观察一下控制台输出的 jfinal action report,里面会显示请求的是哪个 action,这样心中有数

2020-10-20 15:47

@四零四 http host头攻击是如何实施的,有什么破坏后果,jfinal undertow 是不是天然免疫了?

异常是什么,我想了解更多信息,好解决问题

2020-10-20 15:26

这个方案极其简洁,谢谢你的分享,必赞

2020-10-20 12:42

用一下 Db.batchSave/batchUpdate 这样的 API,具体用法在这些 API 注释中有 demo,鼠标放在这些方法上会自动弹出注释来

2020-10-20 12:40

VerifyError 是在被加载的类文件验证的时候出了问题,可能是你的 .class 确实有问题,可能是文件被损坏,也有可能是依赖的第三方文件有问题

删掉本地 maven 库中的相关依赖文件所在的目录,让 mavne/gradle 重新下载文件试试

2020-10-20 12:36

分享很有用,图文并茂介绍很详细,谢谢你的分享,必赞

2020-10-20 12:34

@四零四 tomcat 可以添加 filter, jfinal undertow 也可以,注意看文档:
https://jfinal.com/doc/1-4

注意看文档的第 12 小节《12、添加 Filter、WebSocket、Servlet、Listener》

2020-10-20 12:20

@SuperEric 比 cms 要通用,因为定位是二次开发的基础

2020-10-17 15:10

local_policy.jar 以及 US_export_policy.jar 这两个文档,从 JDK 1.8 开始就已经在其自身提供了,只是放置的位置不在 java-home/lib/security, 你将其复制到这个目录下面

2020-10-17 15:09

@红星 要往 jdk 中的 java-home/lib/security 目录中放入 local_policy.jar 以及 US_export_policy.jar 文件

你试一试,然后再来反馈一下