Dosya izinlerini kontrol edin

5 Cevap php

Nasıl passthru () veya exec yoluyla işletim sistemini belirli bir komutu çalıştırmak () gerek kalmadan, dosya izinlerini kontrol edebilirsiniz?

5 Cevap

Kullan fileperms() function

clearstatcache();
echo substr(sprintf('%o', fileperms('/etc/passwd')), -4);

Sen is_readable(), is_executable() vb. Komutları kullanabilirsiniz.

Gerçek kodlayıcılar bitsel işlemleri, değil dizeleri ;) Bu işleme izinlerinin çok daha zarif bir şekilde kullanın:

function checkPerms($path)
{
    clearstatcache(null, $path);
    return decoct( fileperms($path) & 0777 );
}

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.