PHP uygulamasında güvenlik uzaktan ve yerel güvenlik endişelerini içerir. PHP geliştiricilerinin her iki karakteristiği de içine alan uygulamalar geliştirebilmeleri için sahip olmaları gereken 7 alışkanlığı bu makalede listelemeye çalışacağım.Konu güvenliğe geldiğinde, işletim sistemi ve platform güvenlik sorunlarının yanısıra kendi yazdığınız uygulamaların da güvenli olduğuna emin olmanız gerekmektedir. PHP uygulamaları yazarken aşağıdaki 7 maddeyi alışkanlık haline getirirseniz uygulamalarınızın mümkün olan en güvenli şekilde olacağına emin olabillrsiniz.* Girdiyi doğrulayın* Dosya sistemini koruyun* Veritabanını koruyun* Oturum verinizi koruyun* Çapraz-site betikleme açıklarına (XSS) karşı koruyun* Forum gönderilerini doğrulayın* Çapraz-site istek sahteciliğine (CSRF) karşı koruyun.Girdiyi doğrulayın
Konu güvenliğe geldiğinde veriyi doğulamak belki de sahip olmanız gereken en önemli alışkanlıklardan biri olmalıdır. Ve konu girdiye geldiğinde ise bu çok basittir: Kullanıcılarınıza güvenmeyin. Kullanıcılarınız muhtemelen iyi insanlardır ve muhtemelen uygulamalarınızı tam istediğiniz gibi kullanacaklardır. Ancak nerede kullanıcının veri girmesine izin verilirse, orada küçük de olsa gerçekten ama gerçekten kötü verilerin girilme ihtimali de mevcuttur. Bir uygulama geliştiricisi olarak uygulamalarınızı kötü girdilere karşı korumanız gerekmektedir. Kullanıcılarınızın girdilerinin nereye gideceğini ve netip veriler girebileceğini ince eleyip sık dokumak, güçlü ve güvenli uygulamalar geliştirmenize önayak olacaktır.Her ne kadar dosya sistemi ve veritabanı etkileşimi hakkında yazının ilerleyen kesimlerinde konuşacak olsak da, her tür doğrulamayı içine alacak genel doğrulama ipuçları bulunmaktadır:* Güvenilir değerler (white-listed values) kullanın* Sınırlı seçimleri (limited selections) daima yeniden doğrulayın* Bütünleşik kaçış fonksiyonları (escape functions) kullanın* Doğru veri tipleri için doğrulama uygulayın, numaralar gibi.Güvenilir değerler, geçerli olan veriler iken, güvenilir olmayan değerler geçersiz verilerdir. Buradaki ayrım, doğrulama yapılırken, muhtemel değerlerin listesi geçersiz değerlerin listesinden genellikle daha küçüktür ve bunlardan bir çoğu bilinmeyen ya da beklenmeyen değerlerdir.Doğrulama yaparken, tüm bilinmeyen değerlere karşı korunmaya çalışmaktansa, uygulamanın sadece izin verdiklerini doğrulamak ve bunları işler kılmak genellikle daha kolaydır. Örneğin bir alan içerisindeki değerleri tüm rakamlara sınırlamak için girdinin sadece numaralardan oluşup oluşmadığını kontrol etmek daha verimli olacaktır. Nümerik olmayan veriler üzerinde arama yapacak ve bulunması durumunda onları geçersiz olarak işaretleyecek rutinler yazmayın.Dosya Sisteminizi Koruyun
Temmuz 2000’de bir web sitesi, web sunucusu üzerinde bulunan müşteri verilerini sızdırdı. Web sitesini ziyaret eden bir ziyaretçi URL’yi, bu verileri gösterecek şekilde ayarladı. Her ne kadar dosyalar hatalı bir biçimde yerleştirilmiş olsa da, bu örnek, dosya sisteminizi saldırılara karşı korumanın önemine dikkat çekiyor.Eğer PHP uygulamanız dosyalar üzerinde herhangi birşey yaparsa ve kullanıcının giriş yapabileceği değişken bir verisi varsa, kullanıcı girdisini temizleyerek onların herhangi bir girdi ile dosya sistemi üzerinde herhangi bir şey yapamayacaklarından emin olun. Aşağıdaki kod örneği 1, isim atanmış bir imajı indiren bir PHP sitesini örneklendiriyor.Kod Örneği 1: Dosya İndirmek
echo(“