diff --git a/internal/controllers/agent_controller.go b/internal/controllers/agent_controller.go index e5f0106..21e9471 100644 --- a/internal/controllers/agent_controller.go +++ b/internal/controllers/agent_controller.go @@ -404,6 +404,7 @@ func (c *AgentController) WSConnect(ctx *gin.Context) { logger.Errorf("[AgentWS] 升级连接失败: %v, Agent #%s, IP=%s", err, agent.ID, ip) return } + conn.SetReadLimit(constant.MaxMessageSize) // 连接成功,重置失败计数 c.wsManager.RecordConnectSuccess(ip) diff --git a/internal/controllers/auth_controller.go b/internal/controllers/auth_controller.go index 6b706a2..98c24d6 100644 --- a/internal/controllers/auth_controller.go +++ b/internal/controllers/auth_controller.go @@ -181,19 +181,21 @@ func (ac *AuthController) GetCurrentUser(c *gin.Context) { } func (ac *AuthController) Register(c *gin.Context) { - var req struct { - Username string `json:"username" binding:"required"` - Email string `json:"email" binding:"required"` - Password string `json:"password" binding:"required"` - } + /* + var req struct { + Username string `json:"username" binding:"required"` + Email string `json:"email" binding:"required"` + Password string `json:"password" binding:"required"` + } - if err := c.ShouldBindJSON(&req); err != nil { - utils.BadRequest(c, err.Error()) - return - } + if err := c.ShouldBindJSON(&req); err != nil { + utils.BadRequest(c, err.Error()) + return + } - // 安全性:强制设定角色为 user,防止注册时篡改角色为 admin - // 修复原代码中 email 和 password 参数位置颠倒的问题 - user := ac.userService.CreateUser(req.Username, req.Password, req.Email, constant.DefaultRole) - utils.Success(c, vo.ToUserVO(user)) + // 安全性:强制设定角色为 user,防止注册时篡改角色为 admin + user := ac.userService.CreateUser(req.Username, req.Password, req.Email, constant.DefaultRole) + utils.Success(c, vo.ToUserVO(user)) + */ + utils.BadRequest(c, "注册功能已关闭") } diff --git a/internal/middleware/auth.go b/internal/middleware/auth.go index bdd1129..18b246d 100644 --- a/internal/middleware/auth.go +++ b/internal/middleware/auth.go @@ -27,7 +27,11 @@ func AuthRequired() gin.HandlerFunc { origin = c.GetHeader("Referer") } // 如果有 Origin 且不匹配则拒绝(实际部署时应配置允许的 Origin) - // 这里由于是通用逻辑,暂且记录日志或做更严谨的校验 + if origin != "" && !utils.CheckWSOrigin(c.Writer, c.Request) { + utils.Forbidden(c, "CSRF 校验失败: 非法的请求来源") + c.Abort() + return + } } token, err := c.Cookie(constant.CookieName) diff --git a/internal/router/api_routes.go b/internal/router/api_routes.go index 23f7f10..4bd5014 100644 --- a/internal/router/api_routes.go +++ b/internal/router/api_routes.go @@ -18,7 +18,7 @@ func initPublicAPIRoutes(api *gin.RouterGroup, c *Controllers) { { auth.POST("/login", c.Auth.Login) auth.POST("/logout", c.Auth.Logout) - auth.POST("/register", c.Auth.Register) + // auth.POST("/register", c.Auth.Register) } // 公开的站点设置(无需认证)