From 28ffda23718a7576962e5bcfdbdf5895a8ee553f Mon Sep 17 00:00:00 2001 From: bjdgyc Date: Tue, 8 Aug 2023 15:17:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=8A=E4=BC=A0=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=BC=8F=E6=B4=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/admin/api_uploaduser.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/server/admin/api_uploaduser.go b/server/admin/api_uploaduser.go index 43b4650..68d48aa 100644 --- a/server/admin/api_uploaduser.go +++ b/server/admin/api_uploaduser.go @@ -5,11 +5,11 @@ import ( "io" "net/http" "os" + "path" "strconv" "strings" "time" - "github.com/bjdgyc/anylink/base" "github.com/bjdgyc/anylink/dbdata" "github.com/bjdgyc/anylink/pkg/utils" mapset "github.com/deckarep/golang-set" @@ -25,21 +25,27 @@ func UserUpload(w http.ResponseWriter, r *http.Request) { return } defer file.Close() - newFile, err := os.Create(base.Cfg.FilesPath + header.Filename) + + // go/path-injection + // base.Cfg.FilesPath 可以直接对外访问,不能上传文件到此 + fileName := path.Join(os.TempDir(), utils.RandomRunes(10)) + newFile, err := os.Create(fileName) if err != nil { RespError(w, RespInternalErr, "创建文件失败:", err) return } defer newFile.Close() + io.Copy(newFile, file) if err = UploadUser(newFile.Name()); err != nil { RespError(w, RespInternalErr, err) - os.Remove(base.Cfg.FilesPath + header.Filename) + os.Remove(fileName) return } - os.Remove(base.Cfg.FilesPath + header.Filename) + os.Remove(fileName) RespSucess(w, "批量添加成功") } + func UploadUser(file string) error { f, err := excelize.OpenFile(file) if err != nil {