Commit be27ba3aa638f7d0cacf8466eba86f93a33244dc
1 parent
04e59b05
fix(infra): 文件上传时,放宽 directory 校验,可支持类似 XXX/YYY 目录
Showing
2 changed files
with
10 additions
and
3 deletions
yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/file/FileUploadReqVO.java
| @@ -22,7 +22,14 @@ public class FileUploadReqVO { | @@ -22,7 +22,14 @@ public class FileUploadReqVO { | ||
| 22 | @AssertTrue(message = "文件目录不正确") | 22 | @AssertTrue(message = "文件目录不正确") |
| 23 | @JsonIgnore | 23 | @JsonIgnore |
| 24 | public boolean isDirectoryValid() { | 24 | public boolean isDirectoryValid() { |
| 25 | - return !StrUtil.containsAny(directory, "..", "/", "\\"); | 25 | + return isDirectoryValid(directory); |
| 26 | + } | ||
| 27 | + | ||
| 28 | + public static boolean isDirectoryValid(String directory) { | ||
| 29 | + // 1. 不能包含 .. 防止目录穿越 | ||
| 30 | + // 2. 不能以 / 或 \ 开头,防止上传到根目录 | ||
| 31 | + return !StrUtil.contains(directory, "..") | ||
| 32 | + && !StrUtil.startWithAny(directory, "/", "\\"); | ||
| 26 | } | 33 | } |
| 27 | 34 | ||
| 28 | } | 35 | } |
yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/controller/app/file/vo/AppFileUploadReqVO.java
| 1 | package cn.iocoder.yudao.module.infra.controller.app.file.vo; | 1 | package cn.iocoder.yudao.module.infra.controller.app.file.vo; |
| 2 | 2 | ||
| 3 | -import cn.hutool.core.util.StrUtil; | 3 | +import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FileUploadReqVO; |
| 4 | import com.fasterxml.jackson.annotation.JsonIgnore; | 4 | import com.fasterxml.jackson.annotation.JsonIgnore; |
| 5 | import io.swagger.v3.oas.annotations.media.Schema; | 5 | import io.swagger.v3.oas.annotations.media.Schema; |
| 6 | import jakarta.validation.constraints.AssertTrue; | 6 | import jakarta.validation.constraints.AssertTrue; |
| @@ -22,7 +22,7 @@ public class AppFileUploadReqVO { | @@ -22,7 +22,7 @@ public class AppFileUploadReqVO { | ||
| 22 | @AssertTrue(message = "文件目录不正确") | 22 | @AssertTrue(message = "文件目录不正确") |
| 23 | @JsonIgnore | 23 | @JsonIgnore |
| 24 | public boolean isDirectoryValid() { | 24 | public boolean isDirectoryValid() { |
| 25 | - return !StrUtil.containsAny(directory, "..", "/", "\\"); | 25 | + return FileUploadReqVO.isDirectoryValid(directory); |
| 26 | } | 26 | } |
| 27 | 27 | ||
| 28 | } | 28 | } |