我试图在表单中添加一个令牌,以增强安全性(即CSRF)。到目前为止,我所发现的(在堆栈溢出和许多其他站点上)都是推荐使用的:
$_SESSION['token'] = bin2hex(random_bytes(32));我的问题是直截了当的,为什么不直接用:
$_SESSION['token'] = random_bytes(32);为什么要将它转换为十六进制表示?
谢谢
发布于 2017-09-19 15:30:41
在表单的字段中,随机字节将不容易地作为令牌传递。你需要一些可预测的角色。字节的随机流几乎肯定会破坏任何客户端编码(utf-8、iso-8859-1、win1252、big5等)。表单使用。
另一方面,bin2hex编码的字符将始终是纯ASCII字符串,因此它们在客户机上的任何编码中都是安全的。
https://stackoverflow.com/questions/46304334
复制相似问题