背景与价值target=_blank可被利用进行反向标签劫持。设置rel=noopener/noreferrer可阻断opener访问与Referer泄露。统一规范必须:`rel="noopener noreferrer"`。白名单:仅允许受控域外跳,其他拒绝或移除target。审计:记录外链点击与来源。核心实现封装链接创建type LinkOpt = { href: string; text: string } const allowOrigins = new Set(['https://www.example.com','https://docs.example.com']) function originAllowed(href: string): boolean { try { const u = new URL(href); return allowOrigins.has(u.origin) } catch { return false } } function makeExternalLink(opt: LinkOpt): HTMLAnchorElement | null { if (!originAllowed(opt.href)) return null const a = document.createElement('a') a.href = opt.href a.textContent = opt.text a.target = '_blank' a.rel = 'noopener noreferrer' return a } 落地建议统一封装外链创建并强制rel属性与白名单校验,阻断潜在劫持与泄露。验证清单是否为_blank外链设置rel=noopener/noreferrer;外链域是否命中白名单。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
2.199339s