如何将php会话绑定到用户SSL证书

如何将php会话绑定到用户SSL证书,php,security,session,ssl,Php,Security,Session,Ssl,我在php手册中读到一篇关于会话漏洞的文章。我了解到我需要将会话绑定到用户SSL证书,并在每个页面上进行验证。我不太明白这是什么意思 我的站点在每个页面上都有SSL,没有任何交换机,用户在没有https的情况下也无法访问它 我是否需要在代码中采取措施来保护会话?我建议将会话cookie仅限于HTTPS页面,即使您没有切换到非安全页面。这可以在使用session_set_cookie_params()调用session_start()函数之前完成,将参数$secure设置为true。我没有听说需要

我在php手册中读到一篇关于会话漏洞的文章。我了解到我需要将会话绑定到用户SSL证书,并在每个页面上进行验证。我不太明白这是什么意思

我的站点在每个页面上都有SSL,没有任何交换机,用户在没有https的情况下也无法访问它


我是否需要在代码中采取措施来保护会话?

我建议将会话cookie仅限于HTTPS页面,即使您没有切换到非安全页面。这可以在使用session_set_cookie_params()调用session_start()函数之前完成,将参数
$secure
设置为true。我没有听说需要验证cookie,cookie应该加密传输

session_set_cookie_params(0, '/', '', true, true);
session_start();
为了防止会话固定,您应该仅使用cookie而不是URL传输会话id。请参阅
会话。仅使用cookies
设置。要进入安全站点,您可以在登录后重新生成会话id:

login.php:

session_set_cookie_params(0, '/', '', true, true);
session_start();
session_regenerate_id(true);

这将生成一个具有不同会话id的新cookie,但保留会话的内容。

如果您谈论的是客户端证书身份验证(客户端通过该身份验证向服务器提供证书进行身份验证),则可能是使用服务器的身份验证层为您提供id。假设使用Apache Httpd,例如,可以使用
SSLOptions+FakeBasicAuth
来实现。从PHP的角度来看,这与在此之后使用HTTP基本身份验证没有太大区别(您可以将PHP会话绑定到这种形式的身份验证)


如果您不是在谈论客户端证书,而是在SSL/TLS会话ID中,那么SSL/TLS会话的概念与PHP会话完全不同。在PHP会话期间,SSL/TLS会话可能会合法更改,原因有很多(包括连接丢失、超时、并行连接以同时下载页面上的多个项目等)。这种更改的效果对HTTP层是完全透明的。这两种会话之间没有任何联系,使用SSL/TLS会话ID作为PHP会话ID的基础更容易产生问题。

我想您是想将PHP会话绑定到SSL会话ID。还是说客户端证书?