Jboot v3.9.6 发布,新增对 XSS 的防护配置

Jboot 一个更简单的分布式、微服务框架。

Jboot是一个基于 JFinal、JFinal-Undertow、Dubbo、Seata、Sentinel、ShardingSphere、Nacos 等开发的微服务框架,帮助开发者降低微服务、分布式开发门槛。爽爽开发,快乐生活。

到目前为止,Jboot 已经开源超过了 5 年的时间,迭代了 190+ 个版本,已经被超过 1000+ 公司在使用,其中包含了多个知名的上市公司。

Jboot v3.9.6 主要是新增了对 XSS 的防护机制,只需要添加个配置就能杜绝 XSS 攻击,同时拥有极高的性能和用户体验,同时还新增了门户网关的拦截器、负载均衡策略的动态配置功能。

 

在 Jboot 中,只需要添加如下配置就可以有效杜绝 XSS 攻击:

jboot.web.escapeParas = true

当用户通过表单传入 script 代码时,比如 http://127.0.0.1/index?name=<script>alert('')</script>。

通过 JFinal 的 getPara('name') (或者 getModel、getBean)得到的值是:&lt;script&gt;alert(&#39;&#39;)&lt;/script&gt;   

有效杜绝了 XSS 的情况。

在某些情况下,我们希望获得原始的值,而非转义后的值,那怎么办呢?JbootController 提供了一个方法 getOriginalPara('name') 可以得到原始的值:<script>alert('')</script>。


目前,市面上也有很多 XSS 防护解决方案,都有如下不足的地方:

1、性能低,Jboot 可能是市面上性能最好的 XSS 解决方案。

2、用户体验差,当我们想放出某个表单的时候,需要做很多的配置。在 Jboot 只需要通过 getOriginalPara("name") 就可以获得任意原始值,用户体验极好。


Jboot v3.9.6 更新内容如下:

  • 新增:门户网关动态配置拦截器的功能(之前只能通过配置文件进行配置)

  • 新增:门户网关动态配置负载均衡策略的功能(之前只能通过配置文件进行配置)

  • 新增:columns 新增 groupBy() 和 having() 的方法,方便构建 group by 的 SQL

  • 新增:新增 jboot.web.escapeParas 配置,方便全局对 xss 进行防护

  • 优化:升级 JFinal、HikariCP、metrics、Shiro 等到最新版本

  • 修复:使用 @bean 注解,然后 Jboot.getBean() 通过 Bean Name 获取不到对象的问题

  • 修复:Redis 缓存的 removeAll() 和 getKeys() 在某些情况返回数据不正确的问题

 

Jboot 开发文档:

https://jbootprojects.gitee.io/docs/

同时,Jboot 官方也推出了收费的企业级开发框架 JbootAdmin ,关于 JbootAdmin 详情咨询海哥。

 

maven 依赖:

<dependency>
   <groupId>io.jboot</groupId>
   <artifactId>jboot</artifactId>
   <version>3.9.6</version>
</dependency>

Hello World:

@Path("/")
public class HelloworldController extends JbootController {

   public void index(){
       renderText("hello world");
   }

   public static void main(String[] args){
       JbootApplication.run(args);
   }
}



评论区

SuperEric

2021-03-08 11:50

SuperEric

2021-03-08 17:44

@海哥 能增加页面总执行时长和自定指令的执行时间么,这样对于调优有一定参考价值,类似输出sql执行时长一样的功能。

海哥

2021-03-08 18:59

@SuperEric 去 git 提个需求吧