我正在使用安全令牌创建不可猜测的URL(16字节,十六进制)
http://example.com/something/private/b5f8c21a628e12b39786fb8ef9561d31
令牌类似于共享密码:谁知道允许URL访问资源。
安全随机值必须适用于安全网址多少字节?
答案 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)