Anasayfa Forumlar Yeni Mesajlar Bugünün Mesajları Üye Ol
Geri git   Turkish Hacking Sabotage | Türkiyenin En Büyük Hack Ve Security Sitesi > Webmaster > ASP / PHP / CGI
Sayfaya güncelle PHP | Güvenlik Önlemleri

Konu Bilgileri
Konu Başlığı
PHP | Güvenlik Önlemleri
Konudaki Cevap Sayısı
8
Şuan Bu Konuyu Görüntüleyenler
 
Görüntülenme Sayısı
306

Cevapla
 
Seçenekler Arama Stil
PHP | Güvenlik Önlemleri
Alt
  (#1)
Ghergedan is Offline
[10]Yeni Üye
Ghergedan will become famous soon enoughGhergedan will become famous soon enough
 
Ghergedan - ait Kullanıcı Resmi (Avatar)
 
>Mesaj Sayısı: 408
>Açtığı Konu: 113

Level: 18 [♥ Bé-Yêu ♥♥ Bé-Yêu ♥]
Paylaşım: 44 / 444
Güç: 136 / 1565
Tecrübe: 79%

Üyelik tarihi: Apr 2007
Nerden: Bursa
Rep Puani: 100
Rep Derecesi : Ghergedan will become famous soon enoughGhergedan will become famous soon enough
   
Standart PHP | Güvenlik Önlemleri - 05-15-2007


Basit PHP Güvenliği:
PHP script'lerinizin güvenli olduğundan emin olmanız için ilk olarak temel kuralları yerine getirmeniz gerekiyor: kullanıcı girdilerinin (input) filtrelenmesi ve çıktıların (output) kontrolü. Eğer bu ikisini doğru olarak yapmıyorsanız script'leriniz her zaman güvenlik problemleri ile karşı karşıya olacaktır. Bu makale'de bu iki işlem ile ilgili yapılması gerekenler anlatılıyor.

Bütün Girileri Filtreleyin:
Script'leriniz harici bir kaynaktan girdi okuduğunda, bu verinin tehlikeli olduğu varsayılmalı ve güvenilmemelidir. Güvenilmemesi gereken değişkenlerden bazıları: $_POST, $_GET, $_REQUEST ve hatta pek mümkün görünmese de önemli veriler içerebilecek olan $_SERVER .

Tehlikeli bir değişkenden gelen veriyi işlemlere tabi tutmadan önce ilk olarak önce onaylanamanız ve filtrelemeniz gerekmektedir. Onaylama işlemi ile sadece sizin istediğiniz verileri içerdiğinden emin olabilirsiniz. Örneğin bir eposta adresi bilgisi bekliyorsanız, onay fonksiyon'unuz girilen verinin doğru bir eposta adresi olup olmadığını kontrol etmeli.

Hemen basit bir örnekle açıklayalım. Aşağıdaki kodda ilk olarak $_POST değişkeninden e-posta adresini alıyorum ve sonra veriyi onaylama işlemine sokuyorum:

PHP- Kodu:
<?php
$eposta 
$_POST['eposta']; # Burada veri hala TEHLİKELİ durumda

// Validate e-mail

if (valid_eposta($eposta) == false) {

// Geçerli bir adres değil

die('Geçerli bir eposta adresi değil!');
}
?>
Veriyi kontrol ederek script'imize tehlikeli verilerin eklenmesi riski büyük ölçüde azaltılmış oldu. valid_eposta() fonksiyon'u PHPit Code Snippet veritabanında da bulunabilecek olan standart bir onay işlemidir.

Verimiz daha güvenli olsa da işimiz daha bitmedi çünkü hala veriyi MySQL veritabanına yerleştirmek istiyoruz ve bu işlemden önce de bazı kontroller yapmamız gerekiyor. PHP tüm önemli karakterlerin escape edildiği mysql_real_escape_string() standart fonksiyon'unu sunar. Diğer bir yöntem ise SQL sorgusunda veriyi her zaman kesme imleri arasına yerleştirin.

Önceki örneğimize devam edelim:

PHP- Kodu:
<?php
$eposta 
$_POST['eposta']; # Burada veri hala TEHLİKELİ durumda

// Validate e-mail

if (valid_eposta($eposta) == false) {

// Geçerli bir adres değil

die('Geçerli bir eposta adresi değil!');
}

// eposta'nın veritabanı için güvenli hale getirilmesi

$eposta mysql_real_escape_string($eposta);

// Artık güvenli!

?>
Artık elimizdeki eposta verisi veritabanına güvenli bir şekilde işlenebilir. Hatalardan kaçınmak için tehlikeli değişkenlere bir ön ek verilebilir, örneğin:

PHP- Kodu:
<?php
$t_eposta 
$_POST['eposta']; # Tehlikeli

// Onay işlemi

$g_eposta mysql_real_escape_string($d_eposta);
?>
Bu şekilde tehlikeli bir veriyi işleme sokarken ön tarafındaki t_ eklentisi ile hemen farkına varabilirsiniz.

Çıktıların filtrelenmesi
Girdilerde olduğu gibi dışarıya sunulan tüm verilerin de (güvenli olarak filtreleyip veritabanına işlediğiniz verilerin dahi) filtrelenmesi gerekmektedir.

Filtrelenmesi gereken en önemli şey probleme yol açabilecek olan HTML tag'leridir. Bunu yapmanın en kolay yolu bütün HTML'i escape işlemine sokan htmlentities() fonksiyon'udur:

PHP- Kodu:
 <?php
echo htmlentities($_GET['eposta']);
?>
Bu kod (saldırganın sayfalarınıza JavaScript kodları eklemesine ve diğer kullanıcıların cookie'lerini çalmasını sağlayan) muhtemel XSS (çapraz site betik çalıştırma - cross site scripting) saldırılarını kaldırır. Eğer mümkünse, htmlentities fonksiyon'unun üçüncü argümanı'nı (encoding/charset tipi) da kullanmalısınız. Google'da HTML'i escape işleminde düzgün encoding ayarı yapmadığı için XSS saldırısından etkileniyordu. Google bu açığı 1 aralık'ta kapattı. Basitçe, her zaman encoding tipini belirlemelisiniz:

PHP- Kodu:
<?php
echo htmlentities($_GET['eposta'], ENT_QUOTES'UTF-8');
?>
Eğer bütün HTML tag'lerini filtrelemek istemiyorsanız, bazı tag'lere izin vermek istiyorsanız strip_tags() fonksiyon'unu kullanabilirsiniz. Fakat bu, <script> tag'lerini filtreleseniz dahi Javascript ekleme açıklarına karşı bir güvenlik problemi içerebilir. ör ( <div onclick="alert('Hi!');"> .

Diğer bir yöntem de sadece sizin istediklerinizi filtrelemenize yarayacak kendi fonksiyon'unuzu yazmanız (veya internet'teki yüzlerce hazır fonksiyon'dan birini kullanmanız). Bu bazen en iyi yöntem olabilir fakat herhangi bir şeyi unutmanız durumunda güvenlik problemlerine yol açabilir.

Son olarak, çıktıyı filtrelemenin en iyi yolu, üç argümanı ile birlikte htmlentities() fonksiyonunun kullanımı fakat bununda işlevi sınırlı (ör: formatlama olmaması) kalabilir. Buna çözüm olarak verileri format'lamanızda kullanılabilecek olan kendi HTML kodunuzu yaratabilirsiniz. Kendi HTML kodunuzu yaratma ile ilgili olarak Create your own BBCode, using PHP dokümanına göz atabilirsiniz.

Sonuç :
Bu makalede PHP programlamının iki temel ilkesi olan girdi filtreleme ve çıktı filtreleme'den bahsettim. Eğer bu ikisini doğru olarak yapabilirseniz çok güvenli bir PHP script'ine doğru yola çıkmışsınız demektir.

Verdiğim örnekler çok basit ve hantal. Escape işlemini otomatikleştirmeniz iyi olabilir. Bunun için iyi bir yöntem gerekli işlemleri yapan bir class veya fonksiyon'lar yazmanız.

PHP güvenliği ile ilgili daha fazla bilgiye ihtiyaç duyuyorsanız aşağıdaki sitelerine göz atabilirsiniz:

- PHP Security Consortium - Çok sayıda bilgi içeren mükemmel bir güvenlik rehberi. Mutlaka okunmalı.
- Essential PHP Security - Chris Shiflett'in Essential PHP Security kitabından bilgiler. Kitabın bir kaç bölümü ücretsiz
- Hardened PHP - Güvenlik bültenlerine yer veriliyor
-------
PHP Güvenliği Kaynak: PHP Security - Basic PHP Security
  
Alıntı ile Cevapla

Cevap: PHP | Güvenlik Önlemleri
Alt
  (#2)
Vasili81 is Offline
[10]Yeni Üye
Vasili81 will become famous soon enoughVasili81 will become famous soon enough
 
Vasili81 - ait Kullanıcı Resmi (Avatar)
 
>Mesaj Sayısı: 389
>Açtığı Konu: 38

Level: 18 [♥ Bé-Yêu ♥♥ Bé-Yêu ♥]
Paylaşım: 43 / 434
Güç: 129 / 1509
Tecrübe: 37%

Üyelik tarihi: Apr 2007
Rep Puani: 101
Rep Derecesi : Vasili81 will become famous soon enoughVasili81 will become famous soon enough
   
Standart Cevap: PHP | Güvenlik Önlemleri - 06-09-2007


eyvallah saolasın
  
Alıntı ile Cevapla
Cevap: PHP | Güvenlik Önlemleri
Alt
  (#3)
coolaFaCaN is Offline
[10]Yeni Üye
coolaFaCaN will become famous soon enoughcoolaFaCaN will become famous soon enough
 
coolaFaCaN - ait Kullanıcı Resmi (Avatar)
 
>Mesaj Sayısı: 855
>Açtığı Konu: 96

Level: 26 [♥ Bé-Yêu ♥♥ Bé-Yêu ♥]
Paylaşım: 126 / 630
Güç: 285 / 2228
Tecrübe: 20%

Üyelik tarihi: Apr 2007
Nerden: www.starhack.org
Rep Puani: 100
Rep Derecesi : coolaFaCaN will become famous soon enoughcoolaFaCaN will become famous soon enough
   
Cevap: PHP | Güvenlik Önlemleri - 07-11-2007


teşekkürler ghergo


Uzun Bi Aradan Sonra Tekrar StarHackz C00L
  
Alıntı ile Cevapla
Cevap: PHP | Güvenlik Önlemleri
Alt
  (#4)
İnFAzcI
 
>Mesaj Sayısı: n/a
>Açtığı Konu: 5558

Level: -INF [♥ Bé-Yêu ♥]
Paylaşım: NAN / -INF
Güç: -INF / -INF
Tecrübe: NAN%

   
Standart Cevap: PHP | Güvenlik Önlemleri - 07-11-2007


eywallah kardeş güzel bilgiler saolasan
  
Alıntı ile Cevapla
Cevap: PHP | Güvenlik Önlemleri
Alt
  (#5)
k@wj is Offline
[10]Yeni Üye
k@wj will become famous soon enoughk@wj will become famous soon enough
 
>Mesaj Sayısı: 13
>Açtığı Konu: 1

Level: 2 [♥ Bé-Yêu ♥]
Paylaşım: 0 / 34
Güç: 4 / 121
Tecrübe: 38%

Üyelik tarihi: Apr 2007
Rep Puani: 100
Rep Derecesi : k@wj will become famous soon enoughk@wj will become famous soon enough
   
Standart Cevap: PHP | Güvenlik Önlemleri - 08-21-2007


eyw. kardeş
  
Alıntı ile Cevapla
Cevap: PHP | Güvenlik Önlemleri
Alt
  (#6)
karboon is Offline
[10]Yeni Üye
karboon will become famous soon enoughkarboon will become famous soon enough
 
>Mesaj Sayısı: 13
>Açtığı Konu: 1

Level: 2 [♥ Bé-Yêu ♥]
Paylaşım: 0 / 34
Güç: 4 / 119
Tecrübe: 38%

Üyelik tarihi: Apr 2007
Rep Puani: 100
Rep Derecesi : karboon will become famous soon enoughkarboon will become famous soon enough
   
Standart Cevap: PHP | Güvenlik Önlemleri - 09-02-2007


teşekkürler arkadasım paytlasım için
  
Alıntı ile Cevapla
Cevap: PHP | Güvenlik Önlemleri
Alt
  (#7)
tigertr is Offline
[10]Yeni Üye
tigertr will become famous soon enoughtigertr will become famous soon enough
 
>Mesaj Sayısı: 80
>Açtığı Konu: 1

Level: 7 [♥ Bé-Yêu ♥♥ Bé-Yêu ♥♥ Bé-Yêu ♥♥ Bé-Yêu ♥♥ Bé-Yêu ♥]
Paylaşım: 0 / 172
Güç: 26 / 572
Tecrübe: 89%

Üyelik tarihi: May 2007
Rep Puani: 100
Rep Derecesi : tigertr will become famous soon enoughtigertr will become famous soon enough
   
Standart Cevap: PHP | Güvenlik Önlemleri - 09-13-2007


eline saglık saolasın
  
Alıntı ile Cevapla
Cevap: PHP | Güvenlik Önlemleri
Alt
  (#8)
Lavandiz is Offline
[10]Yeni Üye
Lavandiz will become famous soon enoughLavandiz will become famous soon enough
 
>Mesaj Sayısı: 1
>Açtığı Konu: 0

Level: 1 [♥ Bé-Yêu ♥]
Paylaşım: 0 / 0
Güç: 0 / 0
Tecrübe: 0%

Üyelik tarihi: Dec 2007
Rep Puani: 100
Rep Derecesi : Lavandiz will become famous soon enoughLavandiz will become famous soon enough
   
Standart Cevap: PHP | Güvenlik Önlemleri - 12-29-2007


Teşekkurler Kardes
  
Alıntı ile Cevapla
Cevap: PHP | Güvenlik Önlemleri
Alt
  (#9)
TuηaßoyLu
 
>Mesaj Sayısı: n/a
>Açtığı Konu: 5558

Level: -INF [♥ Bé-Yêu ♥]
Paylaşım: NAN / -INF
Güç: -INF / -INF
Tecrübe: NAN%

   
Standart Cevap: PHP | Güvenlik Önlemleri - 01-17-2008


paylaşım için saol...
  
Alıntı ile Cevapla
Cevapla


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler Arama
Stil

Yetkileriniz
Yeni Mesaj yazma yetkiniz aktif değil dir.
Mesajlara Cevap verme yetkiniz aktif değil dir.
Eklenti ekleme yetkiniz aktif değil dir.
Kendi Mesajınızı değiştirme yetkiniz aktif değil dir.

Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı

Porno
webmaster
Powered by Jelsoft Enterprises Ltd.
Content Relevant URLs by 3.0.0


"İnsanların en hayırlısı, insanlara faydalı olandır." Hz.Muhammed (S.A.V)
2004-2008© Starhackz.Com All Legal Reserved

Linkler :
Siteyi En iyi 1024*768 Çözünürlükte Mozilla Firefox İle görüntüleyebilirsiniz

eXTReMe Tracker