- fileHash 빈 문자열 시 게임 업로드 거부 (A301.exe 누락 zip 차단) - Rate limiting 추가: 인증 API 10req/min, 일반 API 60req/min - 블록체인 트랜잭션 Idempotency-Key 미들웨어 (Redis 캐싱, 10분 TTL) - 파일 업로드 크기 제한 4GB (BodyLimit) - Username 대소문자 정규화 (Register/Login에서 소문자 변환) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,10 @@
|
||||
package auth
|
||||
|
||||
import "github.com/gofiber/fiber/v2"
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
)
|
||||
|
||||
type Handler struct {
|
||||
svc *Service
|
||||
@@ -18,6 +22,7 @@ func (h *Handler) Register(c *fiber.Ctx) error {
|
||||
if err := c.BodyParser(&req); err != nil {
|
||||
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "잘못된 요청입니다"})
|
||||
}
|
||||
req.Username = strings.ToLower(strings.TrimSpace(req.Username))
|
||||
if req.Username == "" || req.Password == "" {
|
||||
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "아이디와 비밀번호를 입력해주세요"})
|
||||
}
|
||||
@@ -38,6 +43,7 @@ func (h *Handler) Login(c *fiber.Ctx) error {
|
||||
if err := c.BodyParser(&req); err != nil {
|
||||
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "잘못된 요청입니다"})
|
||||
}
|
||||
req.Username = strings.ToLower(strings.TrimSpace(req.Username))
|
||||
if req.Username == "" || req.Password == "" {
|
||||
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "아이디와 비밀번호를 입력해주세요"})
|
||||
}
|
||||
|
||||
@@ -116,6 +116,10 @@ func (s *Service) Upload(filename string, body io.Reader, baseURL string) (*Info
|
||||
}
|
||||
|
||||
fileHash := hashGameExeFromZip(finalPath)
|
||||
if fileHash == "" {
|
||||
os.Remove(finalPath)
|
||||
return nil, fmt.Errorf("zip 파일에 %s이(가) 포함되어 있지 않습니다", "A301.exe")
|
||||
}
|
||||
|
||||
info, err := s.repo.GetLatest()
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user