我们是否必须为网站中的每个表单生成令牌?我的意思是,每次为每个请求的表单生成不同的令牌?如果没有,为什么?
Gum*_*mbo 33
通常,开发人员只需为当前会话生成一次此令牌.在初始生成此令牌之后,该值将存储在会话中,并用于每个后续请求,直到会话到期为止.
如果您想进一步增强安全性,您可以为每个表单/ URL(每个表单令牌)使用一个令牌,以减轻一个令牌泄漏(例如XSS)时的影响,因为攻击者只能成功攻击该特定表单/ URL.
但是使用每个请求令牌,我.即 随每个请求而变化的令牌,而不是削减网站的可用性,因为它限制了并行浏览:
为了进一步增强此提议设计的安全性,请考虑为每个请求随机化CSRF令牌[...].实现此方法导致生成每请求令牌而不是每会话令牌.但请注意,这可能会导致可用性问题.例如,"后退"按钮浏览器功能经常受到阻碍,因为前一页可能包含不再有效的令牌.与此上一页的交互将导致服务器上的CSRF误报安全事件.
因此,我建议您使用每会话令牌或每个表单令牌.