【网络安全 | 代码审计】JFinal之DenyAccessJsp绕过

未经许可,不得转载。

前言

JFinal 是一个基于 Java 的轻量级 MVC 框架,用于快速构建 Web 应用程序。它的设计理念是追求极简、灵活、高效,旨在提高开发效率,减少冗余代码的编写,适合中小型项目以及对性能有较高要求的项目。

在较新的 JFinal 版本中,默认情况下无法直接通过浏览器地址栏输入 .jsp 文件名来访问对应的 JSP 文件。

也就是说,主页面的访问地址可能是 www.example.com/main,而不是 www.example.com/main.jsp

代码审计

现在让我们看看代码是如何阻止我们直接对.jsp文件访问的。

以5.0.2版本为例,启动JFinal后,系统调用对应的过滤器com.jfinal.core.JFinalFilter,先是使用init()进行初始化:

JFinal是一个Java Web开发框架,它提供了简洁的API和丰富的功能来简化Web应用程序的开发。在JFinal中,事务处理是通过`Db`类的`tx()`方法来实现的。下面是一个简单的JFinal事务代码示例: ```java import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; public class TransactionExample { public void performTransaction() { // 开启事务 Db.tx(new IAtom() { @Override public boolean run() throws SQLException { try { // 执行第一个数据库操作 Record record1 = new Record(); record1.set("name", "张三"); record1.set("age", 25); Db.save("user", record1); // 执行第二个数据库操作 Record record2 = new Record(); record2.set("name", "李四"); record2.set("age", 30); Db.save("user", record2); // 如果所有操作都成功,则提交事务 return true; } catch (Exception e) { // 如果出现异常,回滚事务 return false; } } }); } } ``` 在这个示例中,我们首先导入了`com.jfinal.plugin.activerecord.Db`和`com.jfinal.plugin.activerecord.Record`类。然后,我们创建了一个名为`TransactionExample`的类,并在其中定义了一个名为`performTransaction`的方法。这个方法使用`Db.tx()`方法来开启一个事务,并传入一个实现了`IAtom`接口的匿名内部类。在`run()`方法中,我们执行了两个数据库操作:保存两个用户记录。如果这两个操作都成功执行,那么事务将被提交(返回`true`);否则,事务将被回滚(返回`false`)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋说

感谢打赏,祝你平安喜乐。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值