我对此做了很多研究。不幸的是,我发现的所有信息都没有用。我正在研究一个特定的会话劫持案例,因为我已经采取措施保护我的会议,但这个我无法弄明白。
我设置的安全措施是我在会话开始时采用了浏览器指纹:
$_SESSION['fingerprint'] = $_SERVER['HTTP_USER_AGENT'];
每次请求会话时,我都会执行检查
if($_SESSION['fingerprint'] != $_SERVER['HTTP_USER_AGENT']) // Handle accordingly
因此,启用httpOnly
除了欺骗带有不安全连接的wifi路由器或任何其他类型的连接侦听之外,没有太多的会话劫持,攻击者会知道所有请求头,因此复杂性指纹无关紧要。如果攻击者要复制他受害者的所有请求标题,我怎么能保护会话?
答案 0 :(得分:2)
你做不到。一堆HTTP标头(其中一个是cookie)是识别客户端的唯一标头。复制/欺骗所有标头意味着冒充用户。在公共的匿名连接上,你无法做到这一点。如果您还需要更多内容,则必须开始向客户端带外发送实际机密,例如客户端SSL证书。但这并不实用。
在实践中,如果您使用SSL连接保护您的中间人与中间人的连接,这是实际和安全的。