用户输入校验要在服务端完成,但别靠黑名单猜安全
前端校验只改善体验,服务端必须根据接口语义再次校验类型、长度、范围和权限。收到异常反馈时,先用请求 ID 关联日志与 trace,归类为输入错误、鉴权问题、服务故障或潜在安全事件;日志中不得保存完整敏感 payload。
通用“拦截 SQL/XSS 字符”的黑名单容易误伤正常内容,也会被编码和语法变体绕过。SQL 使用参数化查询,HTML 输出采用正确的上下文编码,文件路径按允许目录解析;每种风险由对应层处理。
if err := validator.Struct(req); err != nil { writeError(w, http.StatusBadRequest, "请求参数无效") return }授权应在每个需要保护的资源操作处校验,不能只依赖网关。把已修复的攻击或误用输入加入回归测试,并定期审查依赖、权限和错误响应。安全改进的目标是降低风险,不是宣称入口永远不会遗漏。
错误响应同样是输入处理的一部分。对用户返回稳定、可理解的错误码和提示,对内部日志保留请求 ID 与校验阶段即可;不要把数据库语句、文件路径或 token 片段带回客户端。用越权访问、超长字段、错误编码和路径穿越等请求做回归测试,确认不同入口的处理结果一致。