fix(api): 素材同步 - 增加 ID 长度边界校验

This commit is contained in:
ddCat committed 2026-08-15 17:00:30 +08:00
1 parent 5dfd74d938
commit c4deacd730
2 files changed
+55 -1

No files matched your search

+9 -1
View File
@@ -5,6 +5,7 @@ import (
"errors"
"strings"
"time"
"unicode/utf8"
"infinite-canvas/backend/internal/model"
@@ -295,6 +296,13 @@ func assetFromJSON(userID string, raw json.RawMessage) (model.Asset, error) {
if id == "" {
id = newID()
}
if utf8.RuneCountInString(id) > model.AssetIDMaxLength {
return model.Asset{}, BadAuthRequest("素材 ID 不能超过 80 个字符")
}
primaryVersionID := strings.TrimSpace(payload.PrimaryVersionID)
if utf8.RuneCountInString(primaryVersionID) > 36 {
return model.Asset{}, BadAuthRequest("素材主版本 ID 不能超过 36 个字符")
}
category := model.AssetCategory(strings.TrimSpace(payload.Category))
if category == "" {
category = model.AssetCategoryOther
@@ -309,7 +317,7 @@ func assetFromJSON(userID string, raw json.RawMessage) (model.Asset, error) {
Kind: strings.TrimSpace(payload.Kind),
Category: category,
Status: status,
PrimaryVersionID: strings.TrimSpace(payload.PrimaryVersionID),
PrimaryVersionID: primaryVersionID,
Title: strings.TrimSpace(payload.Title),
PayloadJSON: string(raw),
CreatedAt: createdAt,