我正在构建一个会话控制库,旨在在会话存储上实现一种(有限的)安全形式,以防止会话劫持(没有 SSL)。
它通过设置一个 nonce cookie 来工作,该 cookie 在每个请求上都会更改为一个随机字符串。到目前为止,它运行良好,并且我想出了一个基本的方法来保持会话数据在连接过早超时并且 cookie 无法到达客户端时保持有效。它通过保留设置的最后一个 nonce 来做到这一点,如果旧的 nonce 就位,它不会更新它。它也仅在几秒钟内有效。
但这确实提供了一个小的安全漏洞,可能会被黑客利用一小段时间来利用,我现在正试图堵住这个漏洞。
到目前为止,我能确定的最好方法是以某种方式检查连接是否持续了足够长的时间,以便将 cookie 发送到客户端。我查看过connection_handling
,但我不确定 cookie 是否已通过网络发送(即使状态为normal
时setcookie
)或已被浏览器接受。
那么,是否有任何方法可以确认是否已在客户端浏览器上设置了 cookie,而无需等待客户端发出另一个请求?