开放重定向(Open Redirect)防护与安全重定向策略最佳实践概述开放重定向可被用来绕过防护或进行钓鱼。通过目标白名单与URL规范化、来源与路径校验,可有效防护。白名单与规范化function sanitizeRedirect(target: string, allow: string[]): string | null {
try {
const u = new URL(target)
const originPath = u.origin + u.pathname
return allow.includes(originPath) ? originPath : null
} catch { return null }
}
执行策略function safeRedirect(req: any, res: any) {
const allow = ['https://example.com/home', 'https://example.com/account']
const target = sanitizeRedirect(req.query.next || '', allow)
if (!target) return res.status(400).end('invalid_redirect')
res.redirect(target)
}
来源与路径校验function sameOrigin(req: any, url: string): boolean {
try { const u = new URL(url); return u.origin === req.origin } catch { return false }
}
运维要点仅允许明确的目标路径与同源重定向,拒绝外部域对重定向参数进行规范化并记录拒绝事件在登录/敏感操作流程中禁用到外部域的重定向通过白名单与同源策略,可在后端有效防护开放重定向风险。

发表评论 取消回复