php – CSRF令牌 – 如何正确执行?

我刚刚在我的应用程序中设置了一个简单的CSRF保护.它创建一个独特的碎屑,它在提交表单时对会话值进行验证.

不幸的是,现在这意味着,当CSRF碎屑相互碰撞时,我的应用程序不能同时打开多个实例(浏览器中的选项卡).

我应该为每个实际的表单创建一个单独的令牌,或者为我所有的表单使用相互共享的面包屑?
这里有什么常识?

你也可以做这取决于你想要的安全级别.

Owasp企业安全API(ESAPI)使用每个用户会话方法的单个令牌.这可能是一个非常有效的方法,假设你没有XSS漏洞,你的会话超时时间相当短.如果允许会议活动数天或数周,那么这不是一个好办法.

就个人而言,对于每个表单的每个实例,我都不难发现使用不同的令牌.我在键值对中存储用户会话中的结构.每个项目的关键是表单的ID,该值是包含该令牌的另一个结构以及该令牌的到期日期.通常我只允许令牌生活10-20分钟,然后它过期.对于更长的形式,我可能会给它一个很长的到期时间.

如果您希望能够在同一会话中的多个浏览器标签支持相同的表单,那么我的方法会变得有点诡计,但仍然可以通过使用唯一的表单ID轻松完成.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...