基础框架-文档中心基础框架-文档中心
使用指南
公共组件
开发测试
  • 微服务框架
  • Vue3框架
  • 项目实践
更新日志
  • V3.3.0
  • V3.2.6
  • V3.2.5
  • V3.2.4
  • V3.1.0
  • V2.2.x
  • V2.1.0
  • V2.0.0
  • V1.2.1
  • V1.1.1
使用指南
公共组件
开发测试
  • 微服务框架
  • Vue3框架
  • 项目实践
更新日志
  • V3.3.0
  • V3.2.6
  • V3.2.5
  • V3.2.4
  • V3.1.0
  • V2.2.x
  • V2.1.0
  • V2.0.0
  • V1.2.1
  • V1.1.1
  • 版本升级

    • 升级V3.3.0指南
    • 升级V3.2.6指南
    • 升级V3.2.5指南
    • 升级V3.2.4指南
    • 升级V3.x指南
    • 升级V2.2.x指南
    • 升级V2.1.0指南
    • 升级V2.0.0指南
    • 升级V1.2.1指南
    • 升级V1.1.1指南

升级V3.2.5指南

从V3.2.4版本与V3.2.5版本相关步骤,相关数据库脚本更新如下:

1、数据库

更新文件:

src/main/resources/db/migration/upgrade/mysql/V3.2__upgrade.sql(这里只提供mysql的升级脚本、DB2/Oracle查找对应目录下的脚本更新)

-- 指定脚本运行的数据库
use ${database};
-- 2024-10-23 新增配置, 进行文件上传类型的黑白名单校验, 使用apache.tika工具包
-- waf-common包中资源文件 mime/mime-types-default.xml 为默认的类型文件
-- 额外的类型,请参考补默认文件补充到项目资源包下, mime/mime-types-custom.xml
-- 添加系统参数配置数据, 文件上传黑白名单校验
INSERT INTO sys_config (id, name, parent_id, config_key, config_value, is_encrypt, is_system, sort_num, remark, create_time) VALUES('1848902025060810754', '上传文件后缀名黑名单', '910ee5d1ad3041c78bec5608355da7bb', 'fileSuffix.blacklist', 'exe,bat,cmd,sh,com,vbs,msi,js,reg,inf,sys,bin', 0, 1, 102, '文件后缀名, 逗号分隔,  优先于白名单', now());
INSERT INTO sys_config (id, name, parent_id, config_key, config_value, is_encrypt, is_system, sort_num, remark, create_time) VALUES('1848905044896776194', '上传文件后缀名白名单', '910ee5d1ad3041c78bec5608355da7bb', 'fileSuffix.whitelist', ' ', 0, 1, 101, '文件后缀名, 逗号分隔,  允许不在黑名单中的文档上传,  空表示允许不在黑名单中的所有', now());
INSERT INTO sys_config (id, name, parent_id, config_key, config_value, is_encrypt, is_system, sort_num, remark, create_time) VALUES('1848979611707367426', '上传文件mimeType检测', '910ee5d1ad3041c78bec5608355da7bb', 'fileSuffix.mimeTypeCheck.enabled', '0', 0, 1, 103, '1-启用;0-停用(内容特征检测,应对修改文档后缀名逃避黑白名单校验.有可能误伤. 比如:.sh改为.txt', now());

2、后端升级

2.1、waf-parent依赖升级

后端只要将pom.xml中引用waf-parent版本改为3.2.5即可,启动后测试功能是否正常

  • 依赖更新
<parent>
    <groupId>com.wiseda.waf</groupId>
    <artifactId>waf-parent</artifactId>
    <version>3.2.5</version>
</parent>
  • ymal配置更新

下列需要在启用csrf过滤器,配置了具体的授信域名或IP

waf:
  server:
    # csrf 授信域名或IP,多个以逗号分隔
    csrf-domains: ${WAF_CSRF_DOMAINS:}
    # csrf不受限方法,多个以逗号分隔(配置了csrf-domains属性才有效)
    csrf-unrestricted-methods: ${WAF_CSRF_UNRESTRICTED_METHODS:GET,HEAD,TRACE,OPTIONS}
  • 修改sql拼接中where 1=1 的脚本
// 方式一:xxxMapper 中添加<where>标签即可,移除1=1这些脚本
@Select({
"<script>",
"SELECT role_id, group_id from sys_group_role ",
"<where> <if test=\"param.groupId!=null\">group_id = #{param.groupId,jdbcType=VARCHAR}</if>",
"<if test=\"param.roleId!=null\">role_id = #{param.roleId,jdbcType=VARCHAR}</if>",
"</where></script>"
})
@Results({
@Result(column="group_id", property="groupId", jdbcType=JdbcType.VARCHAR),
@Result(column="role_id", property="roleId", jdbcType=JdbcType.VARCHAR)
})
List<SysGroupRole> selectGroupRoleRelation(@Param("param") Map param);

// 方式二:xxxProvider 条件中添加一个StringBuilder,再进行替换
StringBuilder condSql = new StringBuilder();
if (StringUtil.isNotEmpty(params.getUserName())) {
    condSql.append("and operator like concat('%',#{params.userName},'%')");
}
// 拼接条件,替换掉原sql中的1=1 ,在1.2.21之后的版本druid中会报sql injection violation的错误
if (condSql.length() > 0) {
    sql.append("where").append(condSql.toString().replaceFirst("and", ""));
}

3、前端升级

具体的更新可以去对照waf-web中v3.x分支进行合并更新

3.1、是否开启组织机构显示

文件目录:src/views/admin/SysGroup.vue、src/views/admin/SysRole.vue ,开启showOrgInfo

// waf-web 3.x分支 下面属性设置为:true,开启组织机构显示
showOrgInfo: false // 是否展示组织机构信息

3.2、数据源管理

需要配合waf-calcite组件一起使用

上次更新: 12/30/24, 1:32 AM
编辑者: 李贤伟
Prev
升级V3.2.6指南
Next
升级V3.2.4指南