我正在寻找一种方法来安全地散列Cookie中的数据。我有一个服务器群,任何服务器都可以发出Cookie,任何服务器都需要能够验证cookie的内容。
我想做像:
这样的事情Cookie内容:
SHA(<secret-uuid><user-id><expiration-date>)|<user-id>|<expiration-date>
例如:
122233344444|bob|2012-01-01-12-01-03
验证cookie时,我可以简单地将“明文数据”重新哈希到哈希值:
SHA1(<secret-uuid>bob2012-01-01-12-01-03) == 122233344444
目前,我必须在配置文件中手动设置一个,并确保它们在服务器场中的每个服务器之间都是相同的。
是否有任何“安全”方式以编程方式生成在所有计算机上都相同的SECRET-UUID?有没有更好的方法来做这件事?
答案 0 :(得分:1)
您要找的是HMAC。您应该使用HMAC算法,而不是尝试创建自己的算法 - 它旨在否定几种可能的攻击,以防止构建密钥哈希的天真方式。
密钥(你称之为“秘密uuid”)必须分发给所有机器,并且没有神奇的加密方法来避免这种情况。据推测,您可以通过某种方式部署代码和配置;您应该使用相同的方法来分发密钥。
另一种方法是拥有一个创建和验证cookie的'cookie服务器';个别机器可以根据需要进行查询。