安全令牌的长度

时间:2011-09-04 13:56:08

标签: security token access-token

我正在使用安全令牌创建不可猜测的URL(16字节,十六进制)

http://example.com/something/private/b5f8c21a628e12b39786fb8ef9561d31

令牌类似于共享密码:谁知道允许URL访问资源。

安全随机值必须适用于安全网址

多少字节

4 个答案:

答案 0 :(得分:2)

您不应该将您的网址视为一种安全方法(这是security through obscurity的示例)。您应该对受保护的页面使用授权机制,例如具有页面查看权限的用户登录。

看起来您使用的是base-16字符集(0-9a-f),因此只要您阻止对网址进行抓取,那么猜测网址的可能性为1/(16^length)

答案 1 :(得分:2)

我最终获得了64位随机值,该值被编码为url-safe Base64。猜测正确令牌的可能性是1 / 2^64等于1 / 18446744073709551616。这是一个相当令人印象深刻的数字,攻击者几乎不可能通过http请求找到正确的令牌。

网址现在看起来像这样:http://example.com/private/1oWYPiqO81k/

答案 2 :(得分:1)

所有应用程序在某些时候都依赖于cryptographic nonce。毕竟这是会话ID或csrf令牌值。这里的重要性在于,如果攻击者有100年的时间来打破它,那么价值的长短并不重要。现在100年是很长一段时间,但你应该努力让你的设计持续这么久。

Cookie与您的值之间的安全性的主要区别在于Cookie会在每次使用时过期和更改。但实际上,应该不惜一切代价避免这个价值。如果这用于身份验证,那么依赖会话ID,这就是它的原因。不要滚动你自己的会话。

答案 3 :(得分:0)

例如,10个unicode字符URL实际上是无法猜测的,因为令牌长度为160位,因此有2 ^ 160个不同的可能URL。但是你不应该依赖类似的东西来保证安全性,而应该依赖于经典登录和身份验证