将用户ID附加到会话ID不安全吗?

时间:2016-08-16 23:26:54

标签: security session authentication cryptography sessionid

假设我有一个加密安全的随机生成的字符串,我将分隔符和用户的用户ID附加到该字符串并将其用作会话ID。用例是防止冲突。这是否会使我的系统不如使用随机生成的字符串那么安全?

2 个答案:

答案 0 :(得分:1)

让我们将答案分成两个假设:

如果您已经以其他方式(不同的字段,不同的cookie等)发送用户ID,并且攻击者可以访问会话ID,那么您的方法不会为实现添加任何攻击面因此风险保持不变。

如果不以其他方式发送用户ID,那么您向攻击者提供可能在其他攻击中滥用的其他信息。这有多危险取决于应用程序中用户ID的重要性。

最后,我担心你的推理。如果有任何合理的数学碰撞机会,那么你的sessionID不足以达到你试图使用它的目的。安全方面的错误。

答案 1 :(得分:0)

如果碰撞是一种风险,那么您的会话标识符几乎不包含熵是安全的。

来自OWASP Session Management Cheat Sheet

  

如果使用熵为64位的会话ID,则需要一个   攻击者至少292年成功猜出一个有效的会话ID,   假设攻击者每秒可以尝试10,000次猜测,100,000次   Web应用程序中提供的有效同步会话

因此,如果您的会话标识符可以在没有尝试的情况下成功猜到,那么您就会遇到更大的问题。如果系统本身生成碰撞的标识符,则需要紧急审查您的熵源。

要回答您的问题,引入用户ID的风险是,如果您的会话标识符被泄露,攻击者可以立即识别出多汁的用户ID。也就是管理员或root帐户。此外,在添加代码时,应用程序的复杂性也会增加。当保持尽可能简单以解决应用程序面临的风险时,安全性最佳。额外的代码意味着更多的攻击面,以及实施漏洞的额外可能性。

总之,确保您的会话标识符具有至少64位的熵并且熵源是好的(例如,使用CSPRNG而不是PRNG或使用您的应用程序独有的熵源)。