URL规范化与安全路由全栈治理最佳实践概述不一致的URL与路由处理可引发安全绕过。通过统一规范化与白名单策略,在前后端形成一致的路由治理。规范化函数function canonicalUrl(u: string, allowParams: string[]): string | null { try { const url = new URL(u) const keys = allowParams.slice().sort() const parts: string[] = [] for (const k of keys) { const v = url.searchParams.get(k) if (v !== null) parts.push(`${k}=${encodeURIComponent(v)}`) } return `${url.origin}${url.pathname}${parts.length ? '?' + parts.join('&') : ''}` } catch { return null } } 路由白名单const routeWhitelist = new Set(['/','/home','/account','/orders']) function routeAllowed(path: string): boolean { return routeWhitelist.has(path) } 参数与路径校验function validPath(path: string): boolean { return /^\/[a-zA-Z0-9_\-/]*$/.test(path) && !/\.\./.test(path) } function validParam(key: string, value: string): boolean { return /^[a-zA-Z0-9_\-]+$/.test(key) && value.length <= 256 } 服务端拦截示例function guardRoute(req: any, res: any, next: Function) { const p = req.path if (!validPath(p) || !routeAllowed(p)) return res.status(404).end('not_found') for (const [k, v] of Object.entries(req.query)) { if (!validParam(k, String(v))) return res.status(400).end('invalid_param') } next() } 运维要点>- 在前后端统一使用规范化与白名单校验>- 拒绝非规范路径与未知参数,记录审计事件>- 根据业务演进维护路由与参数清单,避免过宽放行通过规范化与白名单的组合,可在全栈层面建立稳健的路由安全治理基线。

发表评论 取消回复