Security 以下针对分布在多个服务上的会话的方案是否安全?

Security 以下针对分布在多个服务上的会话的方案是否安全?,security,session,authentication,encryption,Security,Session,Authentication,Encryption,我正在开发一个客户端/服务器应用程序,它将通过Internet进行通信。然而,服务器确实由许多不同的服务组成,我只希望用户必须对自己进行一次身份验证 我想到的归档方案是使用一个中央身份验证服务(通过加密连接,首先验证服务器的身份),该服务对用户进行身份验证,并使用安全的随机数生成器生成“足够大”的会话ID。对于客户端从此以后需要访问的每个服务,它将创建一个新连接,对服务器进行身份验证(例如使用证书和SSL),然后发送安全会话id以证明它已针对给定会话进行了身份验证。在响应任何其他请求之前,该服务

我正在开发一个客户端/服务器应用程序,它将通过Internet进行通信。然而,服务器确实由许多不同的服务组成,我只希望用户必须对自己进行一次身份验证

我想到的归档方案是使用一个中央身份验证服务(通过加密连接,首先验证服务器的身份),该服务对用户进行身份验证,并使用安全的随机数生成器生成“足够大”的会话ID。对于客户端从此以后需要访问的每个服务,它将创建一个新连接,对服务器进行身份验证(例如使用证书和SSL),然后发送安全会话id以证明它已针对给定会话进行了身份验证。在响应任何其他请求之前,该服务将联系集中式身份验证服务以验证会话是否有效和处于活动状态


与对会话id或服务器签名的身份验证cookie使用质询/响应相比,该方案是否有任何缺点?所有服务都是可信的,因此不需要针对使用连接的会话id来模拟用户的服务(ab)进行保护

一个主要问题是,客户端负责在服务器之间以GET或POST请求的形式传输会话id,这使得该系统容易受到攻击。根据这种描述,不清楚会话状态是如何传输的,也不清楚谁负责这些信息

我同意饼干应该是一个非常大的随机数,称为a。此变量用作访问服务器端状态的密钥。在分布式会话的情况下,最简单的解决方案是有一个单独的服务器或数据库,负责维护所有域的状态。这使得事情变得更容易,因为用户可以同时在多个域上工作,而无需担心竞争条件。当服务器需要设置或获取会话变量时,它们将向公共会话服务器发出请求


要在不引入会话固定漏洞的情况下将用户从一台服务器传输到另一台服务器,需要创建一个一次性使用的“传输Id”,该Id也应该是加密的Nonce。公用服务器知道用户已被标记为要传输。客户端浏览器将此“传输Id”传输到新服务器,新服务器根据“传输Id”查找用户,然后新服务器重新生成用于该域的会话Id。一种方法是使用传统的会话处理程序来确保每台服务器都有一个唯一的会话id。单个服务器可以存储状态信息,将该会话id与分布式系统上特定用户的状态链接起来

一个主要问题是,客户端负责在服务器之间以GET或POST请求的形式传输会话id,这使得该系统容易受到攻击。根据这种描述,不清楚会话状态是如何传输的,也不清楚谁负责这些信息

我同意饼干应该是一个非常大的随机数,称为a。此变量用作访问服务器端状态的密钥。在分布式会话的情况下,最简单的解决方案是有一个单独的服务器或数据库,负责维护所有域的状态。这使得事情变得更容易,因为用户可以同时在多个域上工作,而无需担心竞争条件。当服务器需要设置或获取会话变量时,它们将向公共会话服务器发出请求


要在不引入会话固定漏洞的情况下将用户从一台服务器传输到另一台服务器,需要创建一个一次性使用的“传输Id”,该Id也应该是加密的Nonce。公用服务器知道用户已被标记为要传输。客户端浏览器将此“传输Id”传输到新服务器,新服务器根据“传输Id”查找用户,然后新服务器重新生成用于该域的会话Id。一种方法是使用传统的会话处理程序来确保每台服务器都有一个唯一的会话id。单个服务器可以存储状态信息,将该会话id与分布式系统上特定用户的状态链接起来

会话ID是否通过加密通道发送?会话ID停止暴力强制会话ID是否还有生存时间?服务如何知道会话ID是有效的?通过检查中央服务或某种签名验证?@Mike,会话id将通过加密通道(如SSL)发送,卫星服务将与中央身份验证服务通信,以验证会话id是否有效。我只需注意“足够大”必须考虑会话的生命周期,除非您有其他方法(速率限制或引用)来防止暴力攻击。我知道“所有服务都是可信的”是一个非常简单的假设,在您首次推出系统时可能是正确的,但在维护中,任何一组服务都会有一些维护良好的关键服务,以及一些维护不太好的服务,这些服务虽然没有那么重要,但很难完全封存。在“所有服务都受信任”的情况下,攻击者只需破坏一个不太关键且维护不善的服务,即可提升其对关键服务的权限。会话ID是否通过加密通道发送?会话ID停止暴力强制会话ID是否还有生存时间?服务如何知道会话ID是有效的?通过与中央服务进行检查或某种签名验证?@Mike,会话id将通过加密通道(如SSL)发送,卫星服务将与中央身份验证服务进行通信,以验证会话id是否有效。我只需注意,“足够大”的会话id