Rastgele bayt oluşturmak için /dev/urandom
okur bir proje üzerinde çalışırken, ben sadece bir dosya değil, bir aygıtın /dev/urandom
olduğundan emin olmak için denetleyin önerildi.Belirli bir dosyanın PHP'den BSD/Linux üzerinde nasıl bir aygıt garanti edilmesi gerekir?
en basit yolu gibi bir şey gibi görünüyor:
/**
* Is the given file a device?
*
* @param string|resource $file
* @return boolean
*/
function is_device($file)
{
if (is_resource($file)) {
$stat = fstat($file);
} elseif (is_readable($file) && !is_link($file)) {
$stat = stat($file);
} else {
return false;
}
return $stat['rdev'] !== 0;
}
Sorum şu iki yönlüdür:
- bu dosyanın bir cihaz olup olmadığını kontrol etmenin en iyi yolu var mı?
- Bu
$stat['rdev'] !== 0
denetiminin başarısız olduğu durumlar var mı? Önemli
: Ben herhangi bir PECL uzantıları veya özel C kodu bağlı olmadan PHP olmalıdır gerekir çözüm. Proje a pure PHP 5 polyfill of PHP 7's random_bytes()
and random_int()
functions'dur ve Composer'ın başkasının PHP 5 projelerinde kurulabilir olması amaçlanmıştır.
[Bunu gördünüz mü?] (Http://insanecoding.blogspot.com/2014/05/a-good-idea-with-bad-usage-devurandom.html) –
Şu andaki resmi olmayan duruşum: "TOCTOU sorunları ve dosya tanımlayıcı tükenme saldırıları kapsam dışıdır. Dosya sisteminiz pürüzlü ise, PHP web uygulamanızın sizi kurtarmak için yapabileceği hiçbir şey yoktur. " –