我正在Go中写一个网络服务。
登录后,将向用户返回一个令牌,其行为大致类似于cookie,因为用户必须在每个后续请求中传递它才能被识别。
我的令牌生成器是否必须“加密安全”,即。用高熵产生?
我怎样才能在Go中实现这一目标,最好是使用与我不同的加密人员编写的标准库或库?
答案 0 :(得分:5)
令牌生成器具有加密安全性,以降低攻击者猜测新会话令牌并获取特权的能力,这将是有益的。 crypto/rand实现了这样一个随机数生成器,包括允许你生成随机整数,素数和适合于此的字节的函数。
答案 1 :(得分:1)
是的,使用加密哈希。您可以使用gorilla / securecookie之类的东西来生成密钥并提供cookie存储:http://www.gorillatoolkit.org/pkg/securecookie
请注意,如果您仅依靠Cookie进行验证,那么您可以自行重播攻击。如果ID不存在,使用cookie触发服务器端检查(用户ID ==活动/有效)或退回然后退出。