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()

}

运维要点>- 在前后端统一使用规范化与白名单校验>- 拒绝非规范路径与未知参数,记录审计事件>- 根据业务演进维护路由与参数清单,避免过宽放行通过规范化与白名单的组合,可在全栈层面建立稳健的路由安全治理基线。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部