php 支持 dev urandom,php – 我可以访问/ dev / urandom与open_basedir有效吗?

你有一些选择:

1 – 从一个真正的RNG下载一个转储(this one提供基于放射性衰变的转储),并使用它,只要确保你不读取相同的nn个字节.种种笨重,但是一个选择.

2 – PHP代码(UGLY)执行从/ dev / urandom读取的内容

3 – 回到mt_rand()(也丑,但我已经看到这样做):

for ($i = 0; $i < $count / 8; $i++) {

$output .= dechex(mt_rand(0, 0x7fffffff));

}

所有的选择都是笨重和丑陋的,不幸的是.最好的做法是确保你不必处理open_basedir.不过,这个特别的烦恼可以解决.

最后 – 不可能与你的主机一起飞行,但也许值得一试:

您可以要求您的主机在您的主目录中提供urandom,以便您可以阅读它.告诉他们您需要访问urandom来生成随机数字,以便为用户提供更好的安全性,然后请他们运行:

mknod urandom c 1 9

在你的主目录我只是在自己的服务器上尝试,它的工作原理(但root需要为您做).没有实际的理由阻止你使用系统的伪随机数生成器,除了PHP之外你可以使用它.这实际上是他们允许您访问urandom的最简单的方式,因为它不需要PHP或vhost配置中的异常.

不允许访问/ dev / random是一个合理的事情,因为/ dev / random必须通过可用的(新的)系统熵补充,并且可能导致重要的事情阻止读取,如果耗尽,这可能在低流量服务器上经常发生.然而,/ dev / urandom保证永远不会阻止,因为它只是重新使用内部熵池一次耗尽,这就是为什么它是较低质量的来源.

注意

我不是说open_basedir的想法是坏的,但它也打破了良好的代码.经典的chroot更好,但更难,这就是为什么你遇到open_basedir比你做一个真正的chroot更多.至少,任何程序都应该能够访问服务器上的零,零和urandom设备.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值