我的情况是我的系统检测到cookie是否已被劫持。如果我在两个不同的浏览器之间克隆cookie,那么我的系统可以杀死作为克隆的浏览器上的会话cookie,从而保护原始会话。
但我有一个问题。如何在同一会话中为克隆的浏览器重新生成新的会话ID值?我基本上会给克隆一个新的会话ID,它不会影响原始的会话ID数据。
这是我克隆目前发生的事情:
我想要发生的事情是,cookie不会被删除,而是分配了一个新的 - 不同的 - 会话ID,这样就不会删除当前会话,而是会创建一个空的。
我不能使用session_regenerate_id(),因为这需要启动会话,它会启动上一个会话而不是新会话,而我之前的原始会话数据将丢失,而且无法从上一个会话中访问。我可以使用session_id()函数分配新的会话ID,然后使用它,但是如何生成与PHP本身生成的会话ID值一样安全的会话ID值?
基本上我想做的就是如果我检测到克隆会话,那么我仍然想要启动会话,但我想替换克隆会话的会话ID,同时保持原始会话仍然活着。
答案 0 :(得分:0)
好吧,显然它可以使用session_regenerate_id()方法来接受一个基本上说它是否应该保留以前会话数据的变量。使用这个,我能够编写一个解决方法。