与HTTPS失去联系

时间:2013-06-27 16:59:57

标签: session https

我正在编写一个需要处理丢失连接的Web客户端。

如果使用HTTPS和Internet连接断开连接到服务器,服务器是否会丢失会话信息?

恢复Internet连接后,客户端是否需要重新登录服务器,还是依赖于服务器?

5 个答案:

答案 0 :(得分:5)

通常,服务器确定会话的存在时间(通过定义会话超时)以及在单个请求之间如何保持会话(如果有的话)。服务器将带有会话信息(会话密钥)的cookie发送回客户端,因此当客户端发送包括会话cookie的下一个请求时,服务器知道要使用哪个会话。

说完了 - 两个请求之间没有信息,同时互联网连接是否丢失。只要服务器仍然有会话并且客户端仍然具有相应的cookie,一切都应该按预期工作。

另一方面,即使连接中没有中断,服务器和客户端都启动并运行,但没有相互通话(即没有请求),会话可能会因为简单而丢失服务器端超时。

因此,在服务器上,您可能会收到对受保护或需要某个会话状态的资源的请求 - 并且没有此类会话。在客户端,您总是会收到回复,表明需要登录。

两种情况都必须正确实施。

答案 1 :(得分:3)

HTTP协议本身是无状态,即每个请求都按原样提供,与以后的请求没有任何关系。

要解决此问题,您可以使用客户端Cookie。您的cookie可以保留会话状态标识符,可以在连接断开后将其发送回服务器以恢复以前的状态。

除此之外,您还可以构建一个处理会话持久性的会话管理模块。

答案 2 :(得分:1)

首先取决于你正在谈论的会话类型:

  • ssl会话 这可能导致短期重新谈判。如果服务器支持它。 这意味着它可以节省CPU时间。
  • http会话 在这里,它不仅取决于服务器,还取决于您的网页代码。 例如,如果会话在发送页面时丢弃了。 servlet在刷新期间接收连接重置,并可能使会话无效。
  • 此外,id取决于会话是否绑定到ip地址。比它取决于 新连接使用相同的IP地址。

你可能没有预料到的简单答案。因为它取决于很多要点。

答案 3 :(得分:1)

正如其他人已经声明的那样,您可以使用SessionID“持久化”连接,建议将其存储在cookie中。大多数现代环境(如PHP和ASP.NET)都使用这种机制来处理丢失的连接。

有关实施安全会话管理的安全注意事项,请参阅https://www.owasp.org/index.php/Session_Management_Cheat_Sheet

此外,您可以使用SSL执行的操作是使用客户端证书构建会话管理。用户由发给他的唯一证书识别。这具有客户端不必首先登录的优点。另一方面,您必须向每个客户端颁发客户端证书,这可能很复杂。

答案 4 :(得分:0)

使用cookie存储会话信息,一旦连接丢失,您可以轻松地从cookie中获取信息。使用条件调用cookie,即如果会话丢失,则调用cookie。使用Php在会话中存储信息并调用cookie