PHP include mekanizmalarında LFI riski nasıl önlenir?

0 Yanıt 1 Görüntülenme
·
Katılımcılar
Konuyu Açan #1
PHP Include Mekanizmalarında LFI Riskini Nasıl Azaltabiliriz?

PHP projelerinde include veya require fonksiyonları, modülerlik ve kod tekrarını engellemek adına sıklıkla kullanılır. Ancak, bu fonksiyonların doğru kullanılmaması, özellikle kullanıcı girdisine dayalı dinamik dosya yolları ile, ciddi güvenlik açıklarına neden olabilir. En kritik risklerden biri olan Local File Inclusion (LFI), saldırganlara sunucu üzerinde yetkisiz dosya erişimi imkanı sağlar ve bu durum, veri sızıntısı ya da sunucu kontrolüne yol açabilir.

İşte LFI riskini minimize etmek için temel alınabilecek bazı pratik önlemler:

  1. Kullanıcı Girdisini Doğrulama ve Filtreleme:

Kullanıcıdan gelen dosya adını doğrudan include parametresi olarak kullanmadan önce, bu girdiyi katı kurallarla sınırlandırmak gerekir. Örneğin, sadece önceden tanımlanmış ve güvenilir dosya isimlerini kabul edin veya düzenli ifadelerle kontrol edin.
KOD
123456$allowed_files = ['header.php', 'footer.php', 'sidebar.php'];
if (in_array($user_input, $allowed_files)) {
    include $user_input;
} else {
    die('Geçersiz dosya');
}


  1. Tam Dosya Yolu Kullanımı:

Dinamik olarak dosya yolu oluşturmaktan kaçının. Eğer kullanmanız gerekiyorsa, mutlak ve güvenilir dizinler belirleyin ve kullanıcı girdisini bu dizinler haricinde kullanmayın.
Örneğin,
$base_dir = '/var/www/html/views/';
$filename = basename($user_input); // Sadece dosya adını alırsınız
include $base_dir . $filename;


  1. Dosya ve Dizin Erişim Kontrolü:

PHP'de realpath() fonksiyonuyla dosyanın gerçekten var olduğu ve beklenen dizin içinde olup olmadığını kontrol edin. Bu sayede dizin dışı erişim girişimleri engellenir.
KOD
1234567
$filepath = realpath($base_dir . $filename);
if (strpos($filepath, $base_dir) === 0 && file_exists($filepath)) {
    include $filepath;
} else {
    die('Geçersiz erişim');
}


  1. PHP Güvenlik Ayarlarını Sağlama:

php.ini üzerinde allow_url_include ve allow_url_fopen ayarlarını kapatmak, uzak dosya inclusion saldırılarını engeller. Aynı zamanda open_basedir direktifiyle PHP’nin erişebileceği dizinleri sınırlandırmak da faydalıdır.

Son olarak, en iyi uygulama, kullanıcı girişine dayalı dinamik include işlemlerinden kaçınmak ve mümkünse statik veya önceden belirlenmiş dosya listeleri kullanmaktır. Bu yöntemler, PHP uygulamanızın LFI saldırılarına karşı dayanıklılığını önemli ölçüde artıracaktır.

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi