Fatihsoysal.com

Freelance Proje İş Alımı


Merhaba, şu anda anahtar teslim freelance proje iş alımları için uygunum.
Tekliflerinizi buradan yada fatihsoysal@outlook.com e-posta adresi üzerinden benimle paylaşabilirsiniz. Çok kısa bir süre içerisinde tarafınıza geri dönüş sağlanacaktır.

Kategoriler


Güvenli PHP Uygulamaları Oluşturmak İçin Yararlı İpuçları

Fatih SoysalFatih Soysal

PHP, bildiğiniz gibi web için en popüler programlama dillerinden biridir. Her ne kadar birileri bunu kabullenmek istemese de. Kullanımı oldukça esnek olan bu dil programcıya çok fazla yardımcı olabilir aynı zamanda güvenlik açıkları konusunda barikatlar da yaratabilir.

Bu yazıda, bazı yaygın PHP güvenlik tuzaklarından ve geliştirme hatalarından kaçınmanıza yardımcı olacak 5 ipucu inceleyeceğiz. Peki güvenlik zafiyetlerinden kaçınmamız için neler yapmamız gerekiyor?

1- Uygun Hata Raporlarını Kullanmalısınız

Proje geliştirme işlemi sırasında, uygulama hatası raporlaması sizin en iyi arkadaşınızdır. Hata raporları, sizin yazım hataları bulmanıza yardımcı olur. Değişkenler, hatalı işlev kullanımı ve çok daha fazlasını bu fonksiyonlar bizim için otomatik olarak algılar. Ancak, projeyi yayına alıp bu hataları açık olarak bırakırsanız kötü niyetli kişilere davet çıkarmış olursunuz. Bu hatalar kullanıcılarınıza sisteminiz hakkında bilgi verebilir (Çalıştırdığınız yazılım, klasör yapısı, vs.)

Siteniz canlı yayına gönderildikten sonra, tüm hataları gizlediğinizden emin olmalısınız. Bu, aşağıdaki basit işlevi çağırarak yapılabilir.

PHP error reporting

2- Kötü Özellikleri Devre Dışı Bırakın

PHP geliştiricileri en eski zamanlarından beri, geliştirmeyi kolaylaştırmak için bazı özellikler kullanırlar. Bunlardan bazıları inanılmaz düzeyde yararlıdır özellikler içerir, bazılarıysa istenmeyen sonuçlara neden olabilir. Ben bunları “kötü” olarak adlandırıyorum. Geliştirme sürecine başlarken yapmanız gereken ilk şeyler, bu özelliklerden bazılarını devre dışı bırakmak olacaktır. Ana bilgisayarınıza bağlı olarak, sanal sunucunuzda bunlar kapalı olabilir veya kapatılmayabilir. Kendi bilgisayarınızda veya benzeri diğer yerel bilgisayarlarda uygulama geliştiriyorsanız bunlar muhtemelen kapatılamazlar. Bu özelliklerden bazıları PHP6’da da kaldırılmıştır, ancak PHP4’te bulunmaktadır. Yalnızca PHP5 uygulamalarında kullanımdan kaldırılmıştır. PHP sürümünüze göre kontrolleri sağlamanızda fayda var.

Register Globals

register_globals ile hızlı bir şekilde uygulanma geliştirmeye yardımcı olması amaçlanmıştır
Örnek ile açıklayalım. Örneğin bir URL’yi ele alalım, http: //fatihsoysal.com/index.php?var=1, bu bir sorgu dizesi içerir.
Register_globals deyimi, $var ile değere erişmemizi sağlar. Şimdi karşı koruma sağlamayan PHP uygulamalarına kolayca erişebiliriz. Bu bizim için istenmeyen bir durum. Bu fonksiyonu devre dışı bırakmak için sunucunuzdaki .htaccess ve php.ini dosyanıza erişim sağlayın. Buradaki değerleri aşağıdaki gibi güncelleyin.

Disabling with .htaccess

Disabling with php.ini

var

Magic Quotes (magic_quotes_gpc, magic_quotes_runtime, magic_quotes_sybase)

Magic Quotes, programcıların sorunlarını kurtarmak için tasarlanmış bir özellikti. Addslashes () ve benzeri diğer güvenlik özelliklerini kodlarında kullanmamak için. Bu fonksiyon birden fazla eğik çizgi eklenerek hatalara neden olabilir. Veritabanı motorunda, birçok veritabanına özgü karakterler vardır. Bunları kullanmaktan çekinmek gerekir. Bu fonksiyonu normal betikten devre dışı bırakamıyoruz. php.ini ve htaccess güncellemesi gerekmekte.

Disabling with .htaccess

Disabling with php.ini

3- Girişi Doğrula

Yukarıdaki anlattıklarıma ek olarak, koruma için başka yol da girdi doğrulamaktır. Pek çok uygulamada, aslında zaten giriş işlemlerinde ne istenildiğini herkes az çok biliyor.

Örneğin, kullanıcıları listeleyen bir uygulama oluşturduğumuzu varsayıyorum. Doğum günlerini kullanıcıların kendi eklediklerini düşünelim. Nelere ihtiyacım var? 1-12 arası bir ay, bir sayı olarak 1-31 arasında bir gün ve bir yıl. (YYYY biçiminde Uygulamanızda dil bilgisi (regex), kontrolu yapmak güvenlik adına mükemmel bir yoldur.

Aşağıdaki örneğe  bir göz atalım:

4- Kullanıcı Girişinde Siteler Arası Komut Dosyası (XSS) Saldırıları İzleme

Bir web uygulaması genellikle kullanıcılardan gelen girdileri kabul eder ve onu görüntüler bir şekilde. Bu elbette çok çeşitli şekillerde olabilir HTML biçiminde olan yorumlar, linkler veya blog postları da dahil olmak üzere. Data girişi kabul edilirken HTML’ye izin vermek tehlikeli bir şey olabilir. Çünkü bu dolaylı yoldan sistem üzerinde javascript çalıştırılmasına izin vermemiz demektir. Bir delik bile açık bırakılırsa, Javascript çalıştırılabilir ve çerezler hakkında bilgi sahibi olunulabilir. Bu çerez verileri daha sonra gerçek bir örneği taklit etmek için kullanılabilir
Kendinizi bu tür saldırılardan korumanın birkaç yolu vardır. Bir yolu tamamen HTML’ye izin vermemektir (ki bu en güvenlisidir), çünkü o zaman bunu yapmak mümkün değildir. Ancak bunu yaparsak nasıl blog yazacağız dediğinizi duyar gibiyim, haklısınız. Dediğim gibi bu sadece bir seçenek.
HTML kullanmak istiyorsanız alternatif olarak, sadece “BBCode” veya “BB Tags” olarak adlandırılan popüler bir etiket grubuna izin verebilirsiniz. Forumlarda [b] bold [/ b] biçimleri sıklıkla görülür. Normal HTML’e izin vermeyerek böyle bir yol izlemek bazı biçimlendirme özelleştirmesine izin vermek için mükemmel bir yoldur.
Bunun için BBCode kütüphanelerinden birini kullanabilirsiniz. Detaylı bilgi için HTML_BBCodeParser

bbcode fatihsoysal

5- SQL Enjeksiyonuna Karşı Koruma
Sonuncusu fakat sona kaldığına bakmayın, en tanınmış güvenlik saldırılarından biri. En önemlisi. Web: SQL injection. SQL sorgularınızda bulunan Tek tırnak ( ‘) veya çift tırnak ( “) gibi özel karaktarler filtrelenmezse, kullanıcılar soruları her zaman doğru hale getirerek sistemi kullanabilir ve böylece giriş sistemlerini kandırabilir.
Neyse ki PHP, veritabanınızı korumaya yardımcı olacak birkaç araç sunar. Bir sql sunucusuna bağlandığınızda bunları kullanabilirsiniz.Basit bir çağrı ile çalışır ve değişkenlerinizin kullanımı güvenli olmalıdır. PHP ile sunulan büyük veritabanı sistemlerinin çoğunda bu koruma fonksiyonları bulunmaktadır.
MySQLi, bunu iki yoldan biriyle yapmanıza izin verir. Bir sunucuya bağlandığında mysqli_real_escape_string işleviyle:

Veya hazırlanmış ifadelerle.Hazırlanan ifadeler, SQL mantığını kendisine iletilen verilerden ayırmanın bir yöntemidir. MySQLi kitaplığında kullanılan işlevler, değişkenleri hazır ifadeye bağladığımızda girdiğimizi filtreliyor. Bu şekilde (bir sunucuya bağlandığında) kullanılabilir:

En yaygın güvenlik açıkları ve saldırı türlerini sizlerle paylaştım. Zaman buldukça makale yazmaya devam edeceğim. PHP’deki güvenlik konuları hakkında daha fazla bilgi edinmek için bana e-posta adresim yada iletişim bölümünden ulaşabilirsiniz.

Kullanım ve kodlama mükemmeliyetini odak alan uygulamalar oluşturma deneyimine sahip, profesyonel olarak 15+ yıl üzeri deneyime sahip bir yazılım mühendisi.

    Subscribe
    Bildir
    guest

    1 Yorum
    Eskiler
    En Yeniler Beğenilenler
    Inline Feedbacks
    View all comments
    trackback
    29 Kasım 2016 23:39

    […] şifreler gibi). Bu konuda ayrıntılı bilgi almak isterseniz daha önce yazmış olduğum Güvenli PHP Uygulamaları Oluşturmak İçin Yararlı İpuçları makaleme göz […]

    1
    0
    Would love your thoughts, please comment.x