【问题标题】:Length in bytes for CSRF tokenCSRF 令牌的字节长度
【发布时间】:2015-08-11 05:45:04
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php token csrf


    【解决方案1】:

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

    【讨论】:

    • 我是 Web 开发新手。现在我知道什么是熵了。但是你所说的“128 位熵”到底是什么意思?这是否意味着 128 位随机字符串?如果是这样,我只需要在该函数中传递 16 个字节作为参数长度,对吗?
    • 如果包含官方参考的链接,这个答案将会大大改善。
    猜你喜欢
    • 2018-11-05
    • 2016-08-18
    • 2019-11-19
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 2014-05-17
    • 2011-09-24
    • 2014-04-29
    相关资源
    最近更新 更多