Nasıl passthru () veya exec yoluyla işletim sistemini belirli bir komutu çalıştırmak () gerek kalmadan, dosya izinlerini kontrol edebilirsiniz?
Kullan fileperms() function
clearstatcache();
echo substr(sprintf('%o', fileperms('/etc/passwd')), -4);
Sen is_readable(), is_executable() vb. Komutları kullanabilirsiniz.
fileperms() fonksiyonunu ve substring kullanın:
substr(decoct(fileperms(__DIR__)), -4); // 0777
substr(decoct(fileperms(__DIR__)), -3); // 777
Dosyası için:
substr(decoct(fileperms(__FILE__)), -4); // 0644
substr(decoct(fileperms(__FILE__)), -3); // 644
Yolda veya değişken __FILE__
ve __DIR__
olarak değiştirin
Ya dosya izinlerini kontrol ederek yapmak istiyorsun?
Güvenli kod yazarken, bir şey "sonra bunu," kontrol etmek hemen hemen her zaman yanlış bulunuyor. Nedeni, bir şey yapabilir mi kontrol ve aslında bunu yaparken arasındaki, sistemin devlet bunu yaparken farklı bir sonuç olurdu böyle değiştirebilir olmasıdır.
Bir dosya bir yazmadan önce var olup olmadığını kontrol edin Örneğin, dosyayı başarıyla yazdı olmadığını kontrol yok (ya da detaylı yeterince moda kontrol yok), ve daha sonra yazdığın dosyanın içeriğine bağlı , aslında bir saldırgan tarafından yazılmış bir dosyayı okuma olabilir.
Peki yerine dosya izinlerini kontrol, sadece bu izinleri başarılı oldu kontrol ederseniz yapmak ve incelikle hataları işlemek için gittiğini ne olursa olsun yapmak.