
Php Script yazan herkesin dikkat etmesi gereken en büyük konunun biride php güvenliğidir. Php güvenliği ile sitemize girenlerin siteye zarar vermesini engelleyebiliriz.
Bu anlamda siteye giren kişiler farklı yöntemler ile bize zarar verici davranışta bulunabilirler. Bunun yanında eğer ki paylaşımlı bir sunucumuz varsa ve bu sonucunun yönetimini kendimiz gerçekleştiriyorsak sunucuyu kulllanan sitelerin başka sitelerin dökümanlarına erişimini engellemek Veya zararlı şekilde sunucuya işlem yapmasını engellemek gibi durumlarda Yine bilmemiz gereken bazı hususlar vardır. Genel olarak konularımızın başlıklarına şöyle bir bakarsak
İlk başta define ile harici dosyalara erişimi engelleyeceğiz. Yani kişiler sadece ilgili sayfalara bizim include ettiğimiz anasayfadan erişebilecekler. Bizim tercihimiz haricinde include ettiğimiz sayfalara erişimi engelleyeceğiz.ve Artık php6 ile tedavülden kalkacak olan register global ifadesinin ne anlam ifade ettiğini ve bunun nasıl güvenlik açığı oluşturduğunu inceleyeceğiz.
Arkasından uzak kod sızması dediğimiz bilinçsiz bir şekilde include kullanıyorsak Kişileirn bundan faydalanarak kendi sunucusundaki dosyayı nasıl çalıştırabildiğini ve bu mantıkla bizim kodlarımızı nasıl hackleyebileceğini inceleyeceğiz.
Ondan sonra xss dediğimiz saldırı tekniği ile kişilerin eğer ki biz bazı normal html kodların yazımına izin verdiysek Bunlara nasıl javascript kodları ekleyebildiklerini inceleyip bunların çözümlerini inceleyeceğiz.
Özellikle kullanıcıların giriş yapmasıyla session bizim için önemli olmuştur. Session güvenliği ile de kişilerin session verilerini nasil daha güvenli hale getirebileceğimizi ve olası bir kullanıcıymış gibi giriş yapma işlemini nasıl engelleyebileceğimize değineceğiz. Hepsinden önce unutmamalıyız ki yazdığımız scripte en zayıf halka hangisi ise yaptığımız güvenlik işlemleride o kadar güvenlidir. Yani biz tutupta session yerine cookie kullanırsak Örnek cookie deki gibi adamın giriş yaptığını id yi kaydedersek diğer yaptığımız işlemlerin pek bir anlamı kalmaz çünkü herkes unutmayınki browser kullanmıyordur ve farklı yöntemlerle daha sonraki kısımlardada değineceğimiz Formu spoof edip Sanki gerçekten bir browser ile giriş yapıyor normal kendi gönderiyor gibi sahte bilgiler göndermek sureti ile forma veya bizim yaptığımız scripte erişebilir Bu anlamda mesela session güvenliğinden bahsederken kesinlikle cookie gibi basit bir yöntemle veya cookie de tuttuğumuz değerleri ise hiç güvenli hale getirmeden işlem yapmamalıyız.
Sessoion güvenliğinde ise session kullanırken nelere dikkat etmemiz gerektiğini inceleyeceğiz.
daha sonra formdan gelen bilgileri gerek sayfada gösterirken gerek veritabanına kaydetmeden önce içindeki html tagları temizlemek istiyorsak strip_tags fonksiyonunu kullanacağız ve bunun yanında tagların başlangıç ve bitiş tagı olan büyüktür, küçüktür veya and (&) işareti gibi sakınca teşkil edebilecek ifadeleri temizleyebilmek için htmlspecialchars fonksiyonunun kullanımını inceleyeceğiz.
Daha sonra kişilerin formumuza nasıl saldırı yapabileceğini bundan kurtulmak için javascriptle yaptığımız validationları yani kontrol mekanizmalarını php ile nasıl gerçekleştirebileceğimize bakacağız. Bu anlamda php ile hazır gelen Ctype fonksiyonları kütüphanesinin tüm fonksiyonların tek tek ne işe yaradığını ve bunların örneklerle kullanımlarını inceleyeceğiz Buna müteakip devam eden kısımda formlarımızı biraz daha güvenli hale getirebilmek için forma oluşturduğumuz gizli bir alan ekleyip ve buna session nesnesinde tutulan bir değeri kaydedip random değer ile daha sonraki sayfada sessiondaki değer ve formdan gelen değerin aynı olup olmadığını kontrol ederek formumuzu biraz daha güvenli hale getireceğiz.
Özellikle zaten java kullananlar veya web geliştirenler bu sistemin mekanizma olarak kendiliğinden gerçekleştiğini bilirler. Php de bu işlemi nasıl yapabileceğimizi inceleyeceğiz.
Daha sonra sitemize giren kişilerin bizim yazdığımız kodların php olup olmadığını görmemeleri için php yi php den farklı bir uzantı ile nasıl çalıştırabileceğimizi göreceğiz.Mesela .net uzantısı yada tamamen şaşırmak için php uzantılarını asp yapabiliriz.
Bu işlemleride inceledikten sorna eğerki paylaşımlı bir hostumuz varsa bu hostta dikkat etmemiz gereken ayarlardan kullanıcıyı sadece belirli bir dizinde sınırlamak diğer dizinlere erişimini engellemek için open_base_dir paremetresini, daha sonra exec veya sistem gibi sakınca teşkil edebilecek ki sakıncanın ne olduğunu zaten detaylı anlatacağız bazı fonksiyonları yasaklamak istiyorsak mesela sunucumuzda mail atılmasını istemiyorsak bu fonksiyonu yasaklayabiliriz. Fonksiyonların nasıl yasaklanabileceklerini aynı şekilde classlarında disable_function parametresi ile nasıl yapıldığını inceledikten sonra php6 da tedavülden yine kalkacak olan safe_mode parametresinin ordaki işlevinin veya nerden değiştirebileceğimizibu konu zaten kalkacağı için çok fazla değinmedik. arkasından en önemli sayılabilecek konulardan biri veritabanı güvenliği burda sadece veritabanı güvenliğinin nasıl yapılacağını değil karşımıza gelen kişilerin nasıl sisteme sızdığını kod örnekleri ile ve canlı olarak yazılmış sql leri değiştirerek nasıl yaptıklarını inceleyeceğiz.
Burda bir husus olarak hiç kimse eğer ki veritabanı yapımızı bilmiyorsa kolay kolay sistemimize bu bölümde bulunan bahsettiğimiz tekniklerle erişemez. bundan dolayı özellikle tablo adlarının başına bir ön takı eklemek, alan isimlerinin başına bir ön takı eklemek, ki bu ön takıları random olarak site başına iyi bir alışkanlıktır. Bu anlamda veritabanı güvenliğinin yanında böyle bir uygulamada gerçekleştirebilirsiniz.
Ve son konu olarak veritabanında tuttuğumuz şifreleri eğer ki düz metin olarak mesela şifremiz 123456 ise ve veritabanına erişen birisinin şifresini olduğu gibi görmesini istemiyorsak burdaki şifreyi gizleme tekniklerinden md5 in ne olduğunu ve nasıl kullanıldığını özellikle md5 bir şifrenin brute force kombinasyon deneyerek nasıl kontrol edebildiğini ve asıl değeri bulabildiğini başlıkları inceleyerek php güvenliğini böylelikle bitirmiş oluyoruz.
Tabi bunu takip eden yeni konular çıkması durumunda bu eğitim kapsamında herhangi bir ücret talep edilmeden o konularda bu başlıklara eklenip sizinle tekrar paylaşmış olacağız. Genel olarak php güvenliği ile ilgili şuanlık 15 konudan oluşan eğitimimizin başlıkları bu şekildedir.Şimdi ilk işlem olan define ile sayfalarımızı korumaya başlayalım