SAz*_*SAz 2 php session entropy
在 的session部分中php.ini有一个名为 的指令session.entropy_length。
我知道它用于使会话 ID 的生成“更加随机”。
它如何使 Session ID 更加随机?
最大长度是多少?
如果它的长度超过hash正在使用的位怎么办?
session_id是客户端 IP 地址(32 位)、当前时间戳和微秒(52 位)以及从php combined lcg()伪随机数生成器 (PRNG) 函数(64 位)生成的值的散列。熵是 148 位。但是,不应将此数字视为绝对最小值,因为 IP 地址和时间戳是众所周知的会话创建者。
当可用的熵量过低时,可以根据会话 id重建 PRNG 的种子。由于 PHP 在不同的生成器之间重用相同的熵源,这更加容易。
种子用于生成其他伪随机值,因此如果攻击者可以获得种子值,他就可以预测所有未来的输出(包括但不仅限于mt_rand()和rand)。这不好。
session.entropy_length是将从熵文件中读取的字节数,通常/dev/urandom或/dev/arandom(来自文档)。
如果你提供一个像 的随机源/dev/random,那么熵就越大,生成的强度session_id就越大。
| 归档时间: |
|
| 查看次数: |
1387 次 |
| 最近记录: |