Kodlamış olduğumuz scriptlere dışarıdan erişimi engelleme konusunu işleyeceğimiz bu dersimde bu sayfanın linkini favori sayfalarınıza imlemenizi tavsiye ediyorum. Yeni öğrendiğim tekniği daha önceleri .htaccess kullanarak yapıyordum. Ben size hem bildiğim eski tekniği hemde yeni öğrendiğim php ile olan tekniği ve bildiğim tüm diğer erişim engelleme methodlarını anlatacağım.
Yöntemlerimizden yüzeysel olarak bahsettik ama konunun tam olarak ne olduğu hakkında pek bir bilgi vermedik. Aslında yaptığımız işlem bir güvenlik zaafiyetini gidermekten başka bir şey değil. Daha iyi anlamanız açısından örnek bir script dosyalarının kök dizinde sıralanışını ele alalım.
Scriptiniz/
├── index.php
├── alt.php
├── ust.php
├── sol.php
├── css/
│ ├── style.css
│ └── theme.min.css.map
├── js/
│ ├── bootstrap.js
│ └── bootstrap.min.js
└── images/
├── okan-diye-biri.jpeg
├── okan-diye-biri.png
└── okan-diye-biri-2.png
Klasör ağacına baktığımızda sitemizin ilk açılması gereken dosyası index.php Tüm tarayıcılar varsayılan olarak index.php dosyasını açtığından yanlızca www.siteadresi.com yazdığımızda sitenin sonuna index.php yazmamıza gerek kalmadan da yine index.php dosyası çağrılır ve bu sayfa yorumlanır. Bu mantıktan yola çıkarsak basitçe www.siteadresi.com/ust.php yazdığımızda ust.php dosyası çağrılmış olur. Ancak ben ust.php dosyasının veya alt.php dosyasının bu şekilde açılmasını istemiyorum ki bazı durumlarda genellikle yönetim klasörlerinde güvenlik açığına sebep olur.
Php ile sayfa erişimine engel koymak
Sayfaya İzin Ver
Yukarıdaki klasör ağacına göre index.php dosyasının en üstüne define sabitini ekliyoruz.
<?php define ('guvenlik', true); ?>
Bu kodu hangi sayfanızın en başına eklerseniz o sayfa için erişime müsade etmiş olacaksınız! Erişimden kasıt tarayıcı bu sayfayı açabilecektir.
Sayfayı Engelle
Örneğimize göre alt.php, ust.php, sol.php sayfalarına erişimi aşağıdaki kodu dosyanın en başına yazarak kapatabiliriz.
<?php echo !defined ('guvenlik') ? die ('Sayfaya Erişemezsiniz') : null; ?>
Tarayıcı bu sayfayı “Sayfaya Erişemezsiniz” şeklinde yorumlayacaktır.
Yönlendirerek Engelle
Bu sayfaları ziyaretçiler isim olarak bilmeyebilir, ancak gerekli önlemi almadıysanız google tarafından da indexlenmiş olabilirler. Bu durumda o ziyaretçiyi kaybetmemek adına direk uyarı verdirmek yerine yönlendirebilirsiniz de. Örnekte alt.php için yaptığımızı düşünelim yine dosyanın en başına ekliyoruz.
<?php echo !defined ('guvenlik') ? die ( "<meta http-equiv='refresh' content='1;URL=index.php' >") : null; ?>
Bu sayfayı yanlışlıkla yada herhangi bir kasıtla ziyaret eden üyeler 1 saniye sonra index.php dosyasına yönlenirler.
Klasöre Erişimi Engelleme
Bazen klasörlerin içerisine her elini kolunu sallayanın girebilmesi de bizim için sorun yaratabilir.
index.html oluşturarak
Yukarıdaki klasör ağacına göre www.siteadresi.com/images yazıldığında;
Tarayıcı bu sayfada index olmadığını ve klasör içerisinde bulunan açılabilir tüm dosyaları listeler. Bunu engellemek için ilk başta söylediğimizi tekrar hatırlayalım tarayıcı o sayfada ilk olarak index dosyası aramaktadır. index.html dosyası php’den daha önceliklidir. Hemen bu klasör içerisinde boş bir index.html dosyası oluşturarak images klasöründe bulunan resimlerin veya diğer dosyaların listelenmesini önlemiş olursunuz. İsterseniz bu html dosyasına basit bir yönlendirme kodu dahil edip direk anasayfaya yönlendirebilirsiniz. Burada bir esneklik var aslında biz klasör içerisinde ki resimlere erişilmesini engellemiyoruz direk olarak sadece images klasörüne erişilmesini reddediyoruz.
.htaccess dosyası kullanarak engelleme
Dosyamızın içine
#deny all access deny from all
kodlarını yazarak klasörü erişime kapatabilirsiniz.