【问题标题】:form security token (CSRF) - why use bin2hex in bin2hex(random_bytes(32))形成安全令牌 (CSRF) - 为什么在 bin2hex(random_bytes(32)) 中使用 bin2hex
【发布时间】:2018-02-28 11:15:11
【问题描述】:

我正在尝试在我的表单中添加一个令牌以增强安全性(即 CSRF)。到目前为止,我发现的所有内容(在 stackoverflow 和许多其他网站上)都是使用建议:

$_SESSION['token'] = bin2hex(random_bytes(32));

我的问题很直接,为什么不直接使用:

$_SESSION['token'] = random_bytes(32);

为什么要将其转换为十六进制表示?

谢谢

【问题讨论】:

  • 那么你将如何在表单/url 中打印原始字节?

标签: php forms security token csrf


【解决方案1】:

随机字节不会轻易作为表单字段中的令牌传递。您需要一些可预测的字符集。只是随机的字节流几乎肯定会破坏表单使用的任何客户端编码(utf-8、iso-8859-1、win1252、big5 等)。

另一方面,bin2hex 编码的字符将始终是纯 ASCII 字符串,因此它们在客户端的任何编码中都是安全的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-15
    • 2017-08-25
    • 2016-04-13
    • 2015-08-17
    • 2015-07-30
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    相关资源
    最近更新 更多