• HyperFilter | DoS Protection | DDoS Protection | DoS Mitigation | DDoS Mitigation | AntiDoS | AntiDDoS | Proxy Shielding

PHP Üzerinde Birkaç Basit Güvenlik Önlemi

Katılım
11 Ocak 2012
Mesajlar
12,856



Yaptığımız web site uygulamaları üzerinde her ne kadar güvenlik önlemi alıp güvenli bir sistem oluşturduğumuzu düşünsekte, hiç bir sistem yüzde yüz olarak güvenli değildir. Aldığınız her türlü güvenlik önlemi bir şekilde aşılabilir.



Güvenlik konusunda bence dikkat edilmesi gereken
en büyük olay kullanıcıdır. Her kullanıcıya potansiyel suçlu gözüyle bakmak ve siteyi ona göre yapılandırmak gerekir. Sitenizi ziyaret eden kullanıcı her ne kadar sitenize zarar vermek amacında olmasada, kullanıcıya tam olarak güvenmemelisiniz. Özellikle üyelik sistemi olan sitelerin üye kayıt ve giriş sayfalarında gerekli güvenlik önlemlerini almanız gerekmektedir. Bizde bu konudan haraket ederek alabileceğimiz güvenlik önlemlerine bakalım...



Form verileri site için oldukça büyük
güvenlik sorunu teşkil etmektedir. Form verilerinizi gönderirken Method olarak GET yerine POST özelliğini kullanmalısınız.Form dan gelen verilerinizi zararlı kod içerebileceği ihtimali üzerine mutlaka verilerini filtrelemelisiniz. Bu filtrelemeyi yapmadığınız zaman sitenizde en büyük açıklardan biri; SQL Injection saldırısına uğrama ihtimaliniz yüksektir. Oluşabilecek bir diğer önemli açık ise XSS açığıdır. XSS (Cross Site Scripting) açığı scriptlerin kodlanmasındaki eksiklerin neden olduğu bir açıktır. XSS açığı ile kötü niyetli kişiler siteniz

üzerinde istedikleri zararlı kodları çalıştırabilirler. Peki bu açıkları nasıl önleyebilirsinzi?



XSS açığından korunmak için alabileceğiniz basit önlemler; gelen form verilerinizi filtrelemektir. Bu filtreleme işlemini basit birkaç PHP komutu ile yapabilirsiniz.



View hidden content is available for registered users!






Yukarıdaki
komut ile formdan gelen verileriniz içerisindeki html taglarını temizleyebilirsiniz.Eğer sitenizdeki formdan kullanıcının gönderdiği veri içerisinde html kodu olmasını istiyorsanız yukarıdaki komutu aşağıdaki şekilde kullanarak istediğiniz html tagına izin verebilirsiniz.



 
Cevap: PHP Üzerinde Birkaç Basit Güvenlik Önlemi



bir php programmer olarak neymis merak ettim.. bir kac birseyde ben ekliyeyim,



ilk önce neyi nerede kullanmali sorusuna cevap olmasi acisindan;



POST - Güvenli veri aktarımında iyi ama yavaştır

GET - Güvenliksizdir veriye müdahale edilebilir fakat hızlıdır

REQUEST - Hem POST ile hem de GET ile gönderilen verileri okuyabilir fakat güvensizdir...



bu kullanici veri giris yöntemlerinden birini kullandiktan sonra yapilacak isleme göre güvenlik önlemini almalsiniz,

misalen PUS"unuz var ve burada bir itemi adet olarak satiyorsunuz formumuzda itemid ve adet sutunu bunun güvenligini

Kod:
int($degiken);

veya

int($_POST["degisken"]);

seklinde almalisiniz, böylelikle bu degiskende sadece sayilar kalacaktir,



daha sonra eger islemlerde (örnegin ; isim degistirme, clan degistirme vb. islemlerinde) sql database sorgulatmamiz varsa yani bir deger gönderip o degerin sonucuna göre islem yapiyorsak veya yeni bir deger ekliyorsak,

en basta

8

Kod:
$degeryeni= @mysql_real_escape_string($deger);
(Sql serverler icinde gecerlidir ve ise yarar tahminimce)

komutunu kullanmaliyiz.



fakat her degiskenle böyle ugrasmak yerine config dosyamiza veyahut her sayfada cekilen yani include edilen bir dosyamiza(footer.php, header.php, vb..) bir fonksiyon tanimlayarak heryerde cok basit bir fonksiyon cagirma yöntemiyle güvenligimizi almis oluruz.



örnegin;

Kod:
function temizle($deger)

{

$deger = strip_tags($deger);

$deger = addslashes($deger);

$deger = mysql_real_escape_string($deger);

return $deger;

}



daha sonra istedigimiz yerde asagidaki kod yardimiyla verilerimizi temizleyebiliriz..

Kod:
$degisken = temizle($_POST[name]);



ISS aciklarindan korunmak icinde formlariniza session kodu ekleyerek önleyebilirsiniz

login formunu örnek ele alalim, login yapilan forma

Kod:
<input type="hidden" name="kontrol" vaqalue="<?php $token = md5(uniqid(rand(), true)); ?>"

ekleyerek bunuda databasede session adiyla kaydederek, üyelik panelinin headerinide sessionlari karsilastirip böylelikle ISS aciklarinida bir nebze olsun engellemis olursunuz..
 
Cevap: PHP Üzerinde Birkaç Basit Güvenlik Önlemi



SQL Injectiona karşı önlem olarak PDO kullanabilirsiniz yada ilişkisel veritabanı sistemleri (rdbms) yerine nosql çözümler kullanırsanız sql injection derdinden kurtulmuş olursunuz
 
Cevap: PHP Üzerinde Birkaç Basit Güvenlik Önlemi



I suggest you Santiaize each gate, works with PDO .. will make it much more secure
 
Geri
Üst