php使用token防csrf攻击的时效性

hzwslv 2016-09-23 11:25:39
例如在同一浏览器同时打开了5个商品添加页面,如果使用单一token令牌,在服务器端用户session里保存的是最后打开的页面的token令牌,在提交请求时,由前面的4个页面提交的请求将被程序认为是csrf攻击而拒绝请求
如果是采用数组的方式在session里保存token令牌,可能会产生很多冗余的token令牌数据
有没有比较好的解决方案?
...全文
463 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2016-09-23
  • 打赏
  • 举报
回复
这不能怪你,其实很多人多不知道其中的原因 session 和 cookie 本质是一样的,我们可以用它传递用户有效信息 你现在需要的是防止攻击,所以再用 cookie 传递 token 的话,就起不到防止攻击的效果了 当你用其他方式传递 token 时,那么 token 才可能与 cookie 形成对照,相互验证有效性 也就是,只有两条路线来的数据都合法时,才能认为是合法的
hzwslv 2016-09-23
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
token 通常是 用户、时间相关的加密串 判断有效性时,先解密,然后分项处理(比如时间部分加上一个间隔大于当前时间就是有效的) 并不需要在服务端保存任何信息
受教了,一般的php框架都是session处理的,思维定势了
xuzuning 2016-09-23
  • 打赏
  • 举报
回复
token 通常是 用户、时间相关的加密串 判断有效性时,先解密,然后分项处理(比如时间部分加上一个间隔大于当前时间就是有效的) 并不需要在服务端保存任何信息
hzwslv 2016-09-23
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
token 必须使用不同的方式传递,否则就失去了意义 比如 sessio 本身是可以传递用户有效信息的,如果再用 session 传递 token 就多此一举了 此时的 token 应通过 get 或 post 方式传递 另外,token 是临时发放的,只在当前链接中有效
token是在get请求页面时输出在form表单的隐藏域中,token值是保存在session中的
xuzuning 2016-09-23
  • 打赏
  • 举报
回复
token 必须使用不同的方式传递,否则就失去了意义 比如 sessio 本身是可以传递用户有效信息的,如果再用 session 传递 token 就多此一举了 此时的 token 应通过 get 或 post 方式传递 另外,token 是临时发放的,只在当前链接中有效
hzwslv 2016-09-23
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
这不能怪你,其实很多人多不知道其中的原因 session 和 cookie 本质是一样的,我们可以用它传递用户有效信息 你现在需要的是防止攻击,所以再用 cookie 传递 token 的话,就起不到防止攻击的效果了 当你用其他方式传递 token 时,那么 token 才可能与 cookie 形成对照,相互验证有效性 也就是,只有两条路线来的数据都合法时,才能认为是合法的
也就是说攻击本身可能已经获得用户信息,再使用cookie/session来验证token就没有意义了, 所以通过加密用户身份来生成token,提交时与会话中的用户身份进行比对来判断是否是攻击,是这个意思吧?

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧