Kategoriler

PHP'de Güvenlik

SakliMavi

PHP'de Güvenlik

PHP'de Güvenlik
Web Programlarını tasarlarken çoğumuzun ihmal ettiği bir konu vardır. Güvenlik .Peki nasıl sağlarız bu güvenliği. İlk önce işe HTML Form'larından başlamalıyız. Bir çok sitedeki güvenlik açığını bu formlar oluşturur.Örneğin "<" işaretiyle başlayıp ">" işaretiyle biten bir değişken başınızı bir hayli ağrıtabilir.Veya MySql'e "select * from tablo where alan=$numara" tipi bir sorgu gönderiyorsanız,"alan" integer tipteyse "$numara" değişkeninin string tipte olması ekrana kocaman bir "MySql Error" yazısının gelmesine sebeb olabilir.Peki bunlarla nasıl başa çıkabiliriz.Tabiki sihirli karakterleri yasaklayarak. Bunun için birçok yöntem vardır(Ben 2'sini biliyorum).
1 - İstemci tarafından malum karakterleri yasaklamak.
2 - Sunucu tarafından malum karakterleri yasaklamak.

      1-Bu işi Java Script ile yapabiliriz(Ekte Kullanımı Mevcut).Bunun bir tek eksi yönü vardır.Bildiğiniz gibi JavaScript İstemci tarafında çalıştırıldığı için kötü niyetli arkadaşımız HTML Kodunu HDD'ye kaydedip salt form yapabilir.O yüzden bu yöntem pek sağlıklı sayılmaz.Ama herşeyin çözümü olduğu gibi bununda bir çözümü vardır.İstemci bilgisayarın Sunucu bilgisayara gönderdiği bazı bilgilerden yararlanmak.Bu bilgilerin arasında İstemcinin kullandığı Browser,karakter seti('iso-8859-1',vs…) gibi istatistikçilerin işine yarayacak bilgilerin arasında birde HTTP_REFERER isminde önceden tanımlanmış bir değişken vardır.Bu değişken ziyaretçinin girdiği en son sayfayı referans alıp işler.Yani ali.php'ye veli.htm'deki formdan ulaşıyorsanız ali.php'nin HTTP_REFERER değişkeni veli.htm olur(Örneği ekteki zip dosyasından deneyebilirsiniz).O zaman ali.php'ye göndereceğimiz bilgilerin "www.alanadim.com/veli.htm"'den gelip gelmediğini kontrol ettirerek JavaScript'timizi koruşmuş oluruz.

      2-Bu işi PHP'ye yaptırmak.Bunu yapabilmek için karakter fonksiyonlarına bir bakmamız gerekir.Benim kullandığım strspn() fonksiyonu işe yarıyor.Bu fonksiyonun asıl işlevi verdiğimiz bir kelimenin içinde vermiş olduğumuz diğer karakterlerin kaç tane olduğunu bulmak.Eğer hiç yoksa 0 sonucunu döndürür. Kullanılışı strspn("Aranacak Kelime", "aranacak harfler"). Örneği benim formumda sadece rakamların girilmesini istiyorum.

 

Yukardaki kod benim işimi gördü.

      Bir başka konu ise string'leri şifrelemektir.PHP bize şifreleme konusunda crypt() isminde bir fonksiyon sunar.Bu fonksiyonla kendi belirleyeceğimiz bir anahtar kelime ile şifreleme sağlanır. Kullanımı

      crypt("Şifreyeleyeğimiz Kelime","Anahtar Kelime")

      Örneği bu anahtar kelime olarak 'BaRiS' yazarsak,şifrelenecek kelime olarak mutasyon.net yazarsak.mutasyon.net 'BaPV33lj7VdeU' oluverir.Bunun çok kötü bir tarafı var.Bu şekilde oluşturduğunuz şifrelerin geri çevirilememesidir.Ama kelime ve anahatar kelime aynı olduğu sürece sonuçta aynı kalır.Bunu nerde kullanabilirsiniz?Mesela Parolaları veritabanına crypt ederek kaydedin.Parolayı ne siz anlayabilirsiniz nede bir başkası.Ama kullanıcı oturum açarken girdiği Parolayı crypt ederek kontrol ederseniz işinize yarar.

      Başka şifreleme yöntemleride vardır.Mesela PGP(Pretty Good Privacy,E-Postaları şifrelemek için kullanılır)'nin GNU Lisansı(Açık Kaynak Kodlu) altında dağıtılan sürümü olan GPG(Gnu Privacy Guard,www.gnupg.com)'yi veya ftp://argeas.cs-net.gr/pub/unix/mcrypt/ adresinden indirebiliceğiniz Mcrypt kullanabilirsiniz.Mcrypt okuyabildiğim kadarıyla(Doküman İngilizce'ydi kusura bakmayın artık.ama ingilizcesi iyi olanlar için PHP Manual gerçekten mükemmel.PDG Hazırlıyor) Standart Olarak BlowFish ayriyeten Des,TripleDes, 3-WAY, SAFER-SK64, SAFER-SK128, TWOFISH, TEA, RC2 ve Gost içinde CBC, OFB, CFB ,ECB şifreleme algoritmalarını kullanabiliyor.Anlayacağınız 128 bitlik şifrelemeye bile izin veren güzel bir kütüphane.Ayrıca Mhash( http://mhash.sourceforge.net ) gibi çeşitli PHP şifreleme eklendilerinide kurup deneyebilirsiniz.

Bugüne kadar 121747 ziyaretçi (261609 klik) kişi burdaydı!

Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol