CSRF令牌的长度(以字节为单位)

时间:2015-08-11 05:45:04

标签: php token csrf

我正在研究CSRF预防,特别是不可预测的令牌,一个随机的字母数字字符串。我发现生成令牌的最佳解决方案之一是:     

$token = base64_encode(openssl_random_pseudo_bytes($bytes));
有些人说长度参数足够16个字节。 ($ bytes = 16)
其他人说32字节是正确的选择。 ($ bytes = 32)

但是,in this page,OWASP建议使用512位随机字符串。要实现这个数字,我必须传递64作为长度参数。 ($ bytes = 64)
但我也读到,随着这个长度越来越大,它会严重降低性能。

所以我不知道我应该使用的长度。什么是最好的选择?有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我会认为令牌中的128位熵是事实上的标准。 OWASP和CWE都建议至少这样做。