Session 服务器能否同时向客户端发送会话令牌和会话id?

Session 服务器能否同时向客户端发送会话令牌和会话id?,session,session-variables,Session,Session Variables,背景: 我正在一个具有登录功能的应用程序上执行一些测试。客户端登录到服务器,服务器向其发送身份验证令牌和用户id。客户端在下一个请求中使用令牌和用户id对自身进行身份验证 我不太熟悉这种登录会话是如何工作的。我对我需要确认的一件事感到困惑 问题: 应用程序的工作方式是在HTTP请求中发送令牌和用户id以从服务器检索敏感数据,但在某些请求中,仅发送用户id以检索敏感数据 令人困惑的是,服务器需要知道它正在与经过身份验证的客户端通信。服务器通常使用会话id或会话令牌进行验证。当我的客户端应用程序只发

背景:

我正在一个具有登录功能的应用程序上执行一些测试。客户端登录到服务器,服务器向其发送身份验证令牌和用户id。客户端在下一个请求中使用令牌和用户id对自身进行身份验证

我不太熟悉这种登录会话是如何工作的。我对我需要确认的一件事感到困惑

问题:

应用程序的工作方式是在HTTP请求中发送令牌和用户id以从服务器检索敏感数据,但在某些请求中,仅发送用户id以检索敏感数据

令人困惑的是,服务器需要知道它正在与经过身份验证的客户端通信。服务器通常使用会话id或会话令牌进行验证。当我的客户端应用程序只发送“用户id”时,为什么服务器会响应它,并向它提供敏感数据

在一些应用程序中,我看到会话id和用户id具有相同的值(不同的实体但具有相同的值),因此在我的应用程序中,“用户id”可能表示“会话id”。但为什么服务器同时发送会话令牌和会话id…所以,我的问题是
服务器可以同时发送会话令牌和会话id,还是必须(或大部分情况下)只发送其中一个?

我的主要问题是以上一个,以下是第二个问题:
会话ID和用户ID通常相同还是不同?如果这些不同,那么用户id是会话变量还是与会话无关的东西,例如服务器数据库中的用户id?


p.S.:我不确定它是否适合这个问题。如果需要将其移动到其他stack exchange站点,请告诉我。

要回答问题,请回答:

您可能会对会话id所扮演的角色感到困惑。会话ID和令牌是一样的。会话id/令牌允许服务器执行某种查找,这将指示“此用户正在执行使用此会话令牌的请求”。因此,您不需要同时发送用户id和会话令牌

您可能没有要求的更多信息:

会话令牌确实存在一些安全问题。它们必须合理地唯一,并且只能通过https进行通信。另外,请记住,客户端修改cookie是很容易的。因此,如果发送了用户id和会话令牌,如果应用程序盲目地接受用户id令牌,则用户可能登录,获取会话令牌,然后将其用户id更改为希望模拟的某个不幸用户


现在,也许您正在考虑身份验证令牌?会话令牌可以看作是身份验证的子集。它们的前提是服务器拥有客户端无权访问的秘密。有几种方法可以做到这一点,要么创建一个合理唯一的值并将其与一些额外信息一起存储,要么对只有服务器才能解密的值进行加密。

感谢您的回复!我需要澄清一些事情。所以,我知道会话令牌/id和用户id是两个不同的东西,令牌帮助服务器识别用户,这也可以通过“用户id”实现。所以,服务器不需要同时发送令牌和用户id,但在我的例子中,它同时发送令牌和用户id。这里的令牌是auth令牌。客户端在请求中发送身份验证令牌以进行自身身份验证。令牌是用来告诉服务器请求是活动登录会话的一部分并且应该响应它的。那个么,为什么服务器应该响应一个只有userid的请求呢?这是开发人员接受只包含userid而不包含auth令牌的请求的正确/安全的实现吗?服务器如何知道此HTTP请求是活动登录会话的一部分?用户ID本身是否被视为身份验证指示符?请注意,在我的例子中,即使用户已注销,也会接受具有userid的请求……这确实是特定于应用程序的,如果“userid”足够安全,可以合理地验证用户是他们所说的用户,那么事情应该会好起来。然而,这实际上取决于实现。例如,如果一个用户id只是散列id,那么它是用SHA和salt散列的,还是用易受攻击的算法(如MD5)散列的。听起来你可能有一个潜在的错误在你的手上,应该合理地升起旗子来引起一些注意,至少是为了你自己的想法。