【发布时间】:2019-09-21 17:48:46
【问题描述】:
这是https://github.com/w3c/webappsec-csp/issues/215 的后续。 arturjanc 建议将此讨论移至 stackoverflow。
我们正在尝试为 JSF 中的脚本实现 CSP,但不知道在整个会话中重用脚本 nonce 是否安全。或者,像 arturjanc 建议的那样,让原始文档将其当前的 nonce 发送到生成未来响应的服务器。
假设在整个会话中重复使用 nonce 是不安全的,是否可以像当前实现的 here 一样将初始 nonce 包含在隐藏表单输入中。 (暂时忽略 CSP 标头/XSS 注入漏洞 - 这只是一个原型)
@arturjanc:你想再插话吗?
编辑:关于 arturjanc 回答的其他想法:
您能否详细说明如何在当今典型的 JSF 应用程序中实现按响应随机数,即在开始时仅加载一个完整页面,随后仅进行 XHR 通信?
如果我对您的理解正确,您的建议是在每个 XHR 请求中始终重新发送最初生成的随机数。然而,在实践中,这实际上与每个会话的随机数相同,不是吗?只是在实现方面更复杂。
严格实现每个响应的 nonce 意味着后续响应还必须包括在该会话之前创建的所有 nonce,因此我们会以某种方式跟踪会话的所有 nonce。
为每个仅包含新创建的每个响应随机数的 XHR 响应设置新的 CSP 标头可能不起作用,因为浏览器通过使用交叉策略合并它们来处理跨响应的多个 CSP 标头,即响应 1 中的Content-Security-Policy: 'nonce-1'响应 2 中的 Content-Security-Policy: 'nonce-2' 将在响应 2 之后使两个随机数都无效。
【问题讨论】:
标签: jsf content-security-policy nonce