背景与价值
导航与表单提交是常见外跳路径。CSP的navigate-to/form-action可白名单化目标并阻断恶意外跳。
统一规范
- navigate-to:限制外跳目标域,默认仅允许同源。
- form-action:限制表单提交目标域,默认同源或受控外域。
- 协同治理:结合开放重定向与短链签名策略。
核心实现
头设置
```ts
type Res = { setHeader: (k: string, v: string) => void }
function setCspNav(res: Res, navAllow = "'self'", formAllow = "'self'") {
const v = `navigate-to ${navAllow}; form-action ${formAllow}`
res.setHeader('Content-Security-Policy', v)
}
```
落地建议
- 外跳与表单提交默认同源,必要外域入白名单并审计。
- 与开放重定向治理协同,确保端到端一致的外跳控制。
验证清单
- 是否按白名单下发 `navigate-to/form-action`;外跳与提交是否被非白名单阻断。

发表评论 取消回复