PHP’de Güvenlik: include/require Dosya Uzantıları

Merhabalar,

Bu seride PHP’de güvenlik üzerine çalışacağız. Bu ilk dersimizde include ve require işlemlerinde dosya uzantılarının önemi hakkında konuşacağız. Şöyle bir durum var: Bazen include veya require edilen dosyaların uzantılarını .php yerine .inc yapan arkadaşlar oluyor. Arkasındaki mantığı çözebilmiş değilim, açıkçası merak edip araştırmadım da ama aklıma gelen tek mantıklı şey şuydu: “include satırlarını tek tek yazmak yerine hepsinin uzantısını .inc yapar uzantıya göre dosyaları çağırırım.”. En azından benim aklıma gelen en mantıklı şey buydu, Stackoverflow üzerinde de okuduğuma göre herhangi bir özel anlamı yokmuş, yani siz ne anlam yüklerseniz o oluyor 😀 Stackoverflow üzerindeki başlığın linki de burada, buyrun: http://stackoverflow.com/questions/7129842/what-is-inc-and-why-to-use-it

Şimdi devam edelim. .inc uzantısını kullanmak bazen problem çıkartıyor, hatta öyle ki bu problem veritabanı bilgilerinizin çalınmasıyla bile sonuçlanabilir. index.php dosyanız olduğunu varsayalım. Bu dosyamız sitemizin ana dosyası olsun. Bir de database.php dosyamız var, bu dosyada da bir veritabanı bağlantısı kurduk diyelim. Kodları videoda yazıp gösterdim, tekrar burada yazmak istemiyorum. Herhangi bir kullanıcı sizin bu dosyanızın adının database.php olduğunu öğrenirse eğer ve sonrasında da bu database.php dosyasını çalıştırmaya çalışırsa muhtemelen herhangi bir şeyle karşılaşmayacaktır çünkü .php uzantılı dosyanız direkt olarak çalışacaktır.

Şimdi aynı olayı .inc uzantılı bir dosya üzerinden inceleyelim. index.php adında bir dosyanız ve bir de database.inc adında bir dosyanız olsun. index.php içerisinde database.inc dosyanızı include ettiniz diyelim. Kodlarınız gayet düzgün bir şekilde çalışacaktır, hiçbir sorun çıkmayacaktır. Ama mesele kodlarımızın çalışması değil, bu sefer bu dosyamızın adının database.inc olduğunu öğrenen herhangi birisi eğer adres çubuğuna http://site.com/database.inc şeklinde bir adres yazarsa bu durumda database.inc içerisindeki kodlarınız çalışmayacak, direkt olarak yazı olarak görünecektir. Bu da doğal olarak veritabanı bağlantısı kurarken yazdığınız kodları ve yine doğal olarak veritabanı bilgilerinizi ortaya çıkaracaktır. Yani bu işlemi yapan arkadaş tüm veritabanı bilgilerinizi görmüş olacaktır.

O yüzden mümkün olduğu kadar hassas bilgiler sakladığınız dosyalarınızda .inc uzantısı kullanmayın. Aslında bence genel olarak kullanmanız gereksiz olsa da ne zaman işe yarayacağı belli olmadığı için kesin bir şey söylemek istemiyorum.

Dipnot: eğer sunucunuza gerekli ayarları çekip .inc uzantısını yorumlanacak uzantılar listesine eklerseniz onlar da adres çubuğuna yazıldığında okunmak yerine çalışacaktır.

Konuyla ilgili herhangi bir probleminiz olursa bunu yorum olarak belirtebilirsiniz. Mümkün olduğunca çabuk cevaplamaya çalışıyorum.

Bu derslik bu kadar, başka derslerde görüşmek üzere.

Eğitim Setleri, PHP'de Güvenlik Mustafa Zahid Efe Yorum Yapılmamış