关于freemarker:漏洞通知JeecgBoot-修复Freemarker模板注入漏洞-漏洞危害等级高危

Freemarker模板注入导致近程命令执行, 近程攻击者可利用该破绽调用在零碎上执行任意命令。JeecgBoot官网已修复,倡议大家尽快降级至相干底层依赖和源码 一、破绽形容Freemarker模板注入导致近程命令执行, 近程攻击者可利用该破绽调用在零碎上执行任意命令。破绽危害等级:高危 二、影响范畴minidao-spring-boot-starter 版本 < 1.9.2jimureport-spring-boot-starter 版本 < 1.6.1codegenerate 版本 < 1.4.4hibernate-re 版本 < 3.5.3jeewx-api 版本 < 1.5.2drag-free 版本 < 1.0.2三、修复计划,降级依赖版本和源码目前该破绽曾经修复,受影响用户可降级到以下版本minidao-spring-boot-starter >= 1.9.2jimureport-spring-boot-starter >= 1.6.1codegenerate >= 1.4.4hibernate-re >= 3.5.3jeewx-api >= 1.5.2drag-free >=1.0.2JeecgBoot修复PR:https://github.com/jeecgboot/jeecg-boot/commit/acb48179ab00e167747fa4a3e4fd3b94c78aeda5https://github.com/jeecgboot/jeecg-boot/commit/baf4b96b3fcffa183e19b87485f5fb8388bb36ae

August 15, 2023 · 1 min · jiezi

关于freemarker:记录MVC项目部署时的CDN缓存问题

概述本文将剖析在公布前后端未分离我的项目(freemaker)时遇到的CDN缓存问题,次要有以下两个问题: 页面申请获取的html外面却是旧版本号的script链接script脚本链接是新版本号但拉取到的却是旧脚本代码问题剖析1、页面申请获取的html外面却是旧版本号的script链接 问题剖析前首先咱们要晓得以下知识点: (1)freemaker我的项目的页面是后端服务将ftl解决成html返回的 (2)部署时会遍历ftl文件,对所有的script链接打上版本号 // 构建前 supplierQuoteDetailPaging.ftl<!DOCTYPE html> <head> <script type="text/javascript" src="${Global.getConfig("web.app.static.url")}/js/supplierQuoteDetail.js"></script> </head></html>// 在`Jenkins`构建后会对申请动态脚本的`url`加上版本号 supplierQuoteDetailPaging.ftl<!DOCTYPE html> <head> <script type="text/javascript" src="${Global.getConfig("web.app.static.url")}/js/supplierQuoteDetail.js?version=1638706227856"></script> </head></html>(3)后端是集群服务,部署采纳滚动公布,也就是说部署时节点服务是一批一批来更新的,直到集群中所有的实例都更新成新版本,而不是一次性全量更新 当我的项目还是部署时,因为服务采纳滚动公布,因而在这个期间新服务和旧服务会同时存在。如果在这个阶段拜访页面,页面接口可能命中旧服务,也可能命中新服务,当命中旧服务时,申请失去的html外面script链接打上的是旧版本号;当部署实现时,群中所有的实例都更新成新版本,页面申请命中新服务,申请失去的html外面script链接打上的是新版本号。 解决方案:待我的项目部署实现后刷新页面就能够了 2、script脚本链接是新版本号但拉取到的却是旧脚本代码 失常来说,部署我的项目后,浏览器依据新版本号去申请CDN上的动态脚本文件,如果CDN缓存中没有对应新版本号对应的脚本文件,则会向后端服务拉取新脚本,而后CDN在做一次缓存,前面的脚本申请间接由CDN返回。 然而,如果部署还未实现浏览器就去拜访了,此时这个阶段新服务和旧服务是同时存在的,当新版本号对应的脚本在CDN上找不到时,就会去服务申请,恰好申请命中的是旧服务(服务响应跟版本号无关),旧服务返回旧的脚本,而后CDN缓存新版号对应的旧脚本,这样后续每次申请拉取到的都是CDN上缓存的就脚本,因而就呈现了上述问题。 解决方案:重新部署一遍,待部署实现后再去拜访页面

December 6, 2021 · 1 min · jiezi

关于freemarker:FreeMarker笔记

正文<#-- 正文内容 --><#-- 正文也能够多行内容 -->根本应用<html>Hello ${name} 或,#{name}</html>if判断<#if age gt 10 > 年龄大于10</#if>lt代替<,lte代替<=,gt代替>,gte代替>= 遍历List<#list userList as user> 昵称:${user.nickname}</#list>遍历Map<#list map?keys as key> ${map[key]}</#list>注:map的key只反对String类型,不反对int long等。 assign 创立或替换一个顶层变量<#assign name="Harlan">I'm ${name}<#assign info={"mobile":"xxxxxx","address":"china"} >my mobile is ${info.mobile}, my address is ${info.address}

September 28, 2021 · 1 min · jiezi

关于freemarker:Spring-Boot-引入freemarker

1 Maven引库<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> <version>2.5.5</version></dependency>application.properties 增加配置# 模板文件门路,当初配置在resources下的templates文件夹中spring.freemarker.tempalte-loader-path=classpath:/templatesspring.freemarker.cache=falsespring.freemarker.charset=UTF-8spring.freemarker.check-template-location=truespring.freemarker.content-type=text/htmlspring.freemarker.expose-request-attributes=truespring.freemarker.expose-session-attributes=truespring.freemarker.request-context-attribute=requestspring.freemarker.suffix=.ftl应用示例@RestController@RequestMapping("admin/user")public class AdminUserController extends BaseController{ @Autowired private UserService userService; @GetMapping("/userView") public ModelAndView userView() { ModelAndView modelAndView = new ModelAndView("user/user"); return modelAndView; } @GetMapping("/addUserView") public ModelAndView addUserView() { ModelAndView modelAndView = new ModelAndView("user/userAdd"); return modelAndView; } @GetMapping("/updateUserView") public ModelAndView updateUserView(@RequestParam Long id) { ModelAndView modelAndView = new ModelAndView("/admin/userUpdate"); modelAndView.addObject("user", userService.getUserDetail(id)); return modelAndView; }}

September 28, 2021 · 1 min · jiezi

关于freemarker:记录FM项目页面跳转问题

背景在2021/08/30下午三四点左右,组内测试同学发现蓬莱环境(灰度环境)博世我的项目的主流程呈现问题,具体表现在公布询价页点击“备货询价”以及询价单列表页点击“单号”没有跳转到指定的页面,而是跳到了询价首页 剖析过程首先,配置好蓬莱环境的本地域名解析配置,让本地拜访昆仑环境(正式环境)的域名时走的是蓬莱环境 用管理员权限关上powerShell,到hosts目录 cd C:\Windows\System32\Drivers\etc输出notepad hosts,关上hosts,增加124.71.23.127 os3.rbtssws.com.cn而后,拜访蓬莱环境的博世我的项目,复现问题发现点击“备货询价”或者“单号”时产生了重定向 而重定向的链接是去申请受权,那么为什么会产生这样的重定向呢?跳转页面理当不会一下子session就过期了呀,而后排查request headers中的cookies字段发现没有携带session,而昆仑环境携带了session 难道是浏览器cookie中没有存储吗?然而排查并不是这个问题,那么会不会因为跳转的域名和cookie中的domain不统一呢? 点击“备货询价”跳转的链接: 点击“单号”跳转的链接: 的确发现跳转的域名存在问题,多了一个数字2,很无语!!! 再深刻排查发现页面跳转门路的域名是读取的配置,该配置在工程部署的时候注入的 总结线上问题是因为跳转的门路域名有问题,导致跳转申请没有携带cookie,网关拦挡就会重定向去申请受权,而申请受权的域名是正确的携带了cookie,网关判断是通过的,就默认跳到了首页

August 30, 2021 · 1 min · jiezi

关于freemarker:FreeMarker

FreeMarker次要内容FreeMarker 概述FreeMarker概念 FreeMarker 是一款 模板引擎: 即一种基于模板和要扭转的数据, 并用来生成输入文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 是一个Java类库。 FreeMarker 被设计用来生成 HTML Web 页面,特地是基于 MVC 模式的应用程序,将视图从业务逻辑中抽离解决,业务中不再包含视图的展现,而是将视图交给 FreeMarker 来输入。尽管 FreeMarker 具备一些编程的能力,但通常由 Java 程序筹备要显示的数据,由 FreeMarker 生成页面,通过模板显示筹备的数据(如下图): FreeMarker不是一个Web利用框架,而适宜作为Web利用框架一个组件。 FreeMarker与容器无关,因为它并不知道HTTP或Servlet。FreeMarker同样能够利用 于非Web应用程序环境。 FreeMarker更适宜作为Model2框架(如Struts)的视图组件,你也能够在模板中应用 JSP标记库。 FreeMarker个性通用指标 可能生成各种文本:HTML、XML、RTF、Java 源代码等等 易于嵌入到你的产品中:轻量级;不须要 Servlet 环境 插件式模板载入器:能够从任何源载入模板,如本地文件、数据库等等 你能够按你所需生成文本:保留到本地文件;作为 Email 发送;从 Web 应用程序发送它返回给 Web 浏览器 弱小的模板语言 所有罕用的指令:include、if/elseif/else、循环构造 在模板中创立和扭转变量 简直在任何中央都能够应用简单表达式来指定值 命名的宏,能够具备地位参数和嵌套内容 名字空间有助于建设和保护可重用的宏库,或将大工程分成模块,而不用放心名字抵触 输入转换块:在嵌套模板片段生成输入时,转换HTML本义、压缩、语法高亮等等;你能够定义本人的转换 通用数据模型 FreeMarker不是间接反射到Java对象,Java对象通过插件式对象封装,以变量形式在模板中显示 你能够应用形象(接口)形式示意对象(JavaBean、XML文档、SQL查问后果集等等),通知模板开发者应用办法,使其不受技术细节的打搅 为Web筹备 在模板语言中内建解决典型Web相干工作(如HTML本义)的构造 ...

December 1, 2020 · 6 min · jiezi