关于通过Token来防止会话重放和篡改数据疑问
我的思路是在登录成功后 将SESSIONID+用户id+时间戳+GUID 组合成字符后通过RSA算法加密后生成TOKEN写入COOKIE,然后每次客户端提交请求GET和POST 请求,(包括AJAX请求); 然后我在Global.asax文件的Application_AcquireRequestState或者Application_EndRequest事件中做判断:判断逻辑为:1.用RSA算法解密TOKEN失败则直接抛异常或者忽略;2.TOKEN解密成功后判断里面的SESSIONid与当前登录SESSIONID是否相同,失败则抛异常或者忽略。3.判断当前请求的用户ID是否与TOKEN中的用户ID相同, 失败则直接抛异常或者忽略。4.在缓存中查找GUID为键名的数据,如果找不到则直接抛异常或者忽略。5.token中的时间戳与当前时间的间隔以确定是否超时(多久超时读取配置文件),失败则直接抛异常或者忽略。6.将此TOKEN的的GUID加入缓存中;7.创建新的TOKEN,8.写入COOKE。
我遇到的问题:在单页面的程序中没有什么问题,但是框架页就出问题了。比如 我登录后跳转到DEFAULT.ASPX;我在这里面分为左右两部分,左边菜单树,右边内容选项卡; 这个时候就会出现判断逻辑第4部不通过,跟踪进去的结果是2个请求的页面所提交的TOKEN是同一个。。。导致;我分析形成这问题的原因是由于iframe 页面加载时2个子页面同时提交请求,A请求还没有结束B请求已经提交了,这个时候就带着相同的TOKEN。才导致的问题。只有让他们等上一个请求返回新TOKEN后再提交才能正常。 各位大神,请问下我是思路错了吗,还是哪里考虑的不完善,怎么才能解决这种场景的问题,还有什么好的解决方案能解决越权访问,会话重放攻击,和篡改请求。另外在问下 加入用户注销用户 不关闭浏览器
这个时候有什么办法可以让浏览器的SESSIONID创建一个新的ID不