PHP'de Güvenliğe Giriş

PHP'de güvenlik denilince nedense çok basit olarak algılanıyor. Yeteri kadar özen gösterilmiyor ve sonuç felaketle sonuçlanabiliniyor. PHP'de afet önlemlerini almak için kolları sıvayalım!

PHP'de güvenlik denilince nedense çok basit olarak algılanıyor. Yeteri kadar özen gösterilmiyor ve sonuç felaketle sonuçlanabiliniyor. Hazırlanan iş, şahsi yani kişisel bir site bile olsa hacklenmek her domain için bir prestij kaybıdır.

PHP'de güvenlik denildiğinde basit algılanmayacak hatta PHP'yi öğrenmek ve pekiştirmek için harcadığınız vaktin onlarca kat fazlasını harcatacak bir konudur. Doğal olarak tek bir derse sığmayacak ve vaktim oldukça parça parça PHP'de güvenlik hakkında dersler eklemeye devam edeceğim.

Güvenlik konusu sadece PHP için değil, internet gibi bütün dünyaya erişime açılan her bilgisayarda, her programda, her programlama dilinde sürekli olarak gelişir. Bizler bu alanda şimdilik sadece PHP'ye yönelik çalışmalar yapacağız.

Yabancı Kaynaklar

İngilizcesi olanlar için yabancı, PHP hakkında bulabileceğiniz önemli kaynaklardan bazıları aşağıdaki gibidir;

[*] http://phpsec.org/projects/guide/4.html
[*] http://segfaultlabs.com/files/pdf/php-session-security.pdf
[*] http://www.owasp.org/index.php/Cross_Site_Scripting
[*] http://www.virtualforge.de/vmovie/xss_selling_platform_v1.0.php
[*] http://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29
[*] http://www.owasp.org/index.php/Guide_Table_of_Contents#Data_Validation
[*] https://www.owasp.org/images/8/89/OWASP_Testing_Guide_V3.pdf
[*] http://www.ibm.com/developerworks/web/library/wa-secxss/
[*] http://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet

Ek olarak;

[*] http://www-01.ibm.com/software/rational/offerings/websecurity/

Bu kaynaklar arasında en önemlisi olduğunu düşündüğüm http://www.owasp.org özellikle internete açık yazılımlar hazırlayan herkesin altından girip, üzerinden çıkması gereken, a'dan z'ye ezberlemesi gereken bir kaynaktır.

Neden Yabancı Kaynaklar?

Şahsi düşünceme göre bir internete açık yazılımlar hazırlayan herkesin, kendisine, alanında "uzman" olarak belirtmek isteyenlerin mutlaka yine en azından kendi alanlarında benzeri kaynakları takip edip, anlayabileceği kadar yeterli seviyede İngilizceye sahip olması gerekiyor.

Bunun ilk sebebi, bu tarz teknoloji alanlarında çıkan yeniliklerin neredeyse tamamının ilk olarak İngilizce olarak yayımlanmasıdır. İş güvenliğe geldiğinde yenilikleri sürekli, anında ve sıkı bir şekilde takip etmek hazırladığınız yazılımların değerini bir o kadar artıracaktır.

Unutulmamalıdır ki, bir yazılımcı yeteri kadar İngilizce bilmiyor diye bu kaynakları takip edemiyorsa, hazırladığı yazılıma saldırı yapacak kişi ya da kişilerinde bilmediği anlamına asla gelmez. Sonuçta internet gibi bütün dünyaya açık bir alanda yazılımınızı yayımladığınız düşünülürse, hazırladığınız yazılım hangi dilde olursa olsun, yabancılar tarafındanda saldırıya açık hale geleceği unutulmamalıdır.

Güvenlik Bu Kadar Sıkı Bir Şekilde Güncellenir mi?

Teknoloji çağında yaşayan insanlar olarak, nasıl teknoloji hergün bir önceki güne göre katlanarak daha hızlı gelişmeye devam ediyorsa, aynı şekilde bu gelişimlerle birlikte yeni güvenlik açıklarıda oluşur. Programların, yazdığınız dilin gelişme amacı sadece yeniliklere ayak uydurmak değil, aynı zamanda bir önceki sürümünde yapılan hataları, güvenlik açıklarını kapatmaktır.

PHP ile güvenlik gelişimlerini bir anlamda rakam vererek kıyaslamak istediğimizi düşünelim. PHP'nin gelişim hızına 10 üzerinden 5 verirsek, güvenlik alanında gelişimlerde 10 üzerinden 15 şeklinde gelişme gösterebilir diyebiliriz. Sonuç olarak PHP'de sürüm güncellediğinde, bir önceki sürümünün yarattığı güvenlik açıklarınıda kapatmaya çalışır.

Elbette bu durum sadece PHP için geçerli değildir. Kullandığımız işletim sistemleri (Linux, Windows v.s.), tarayıcılar, programlar kısacası hemen hemen her yazılım bugün sürekli olarak güncellenmektedir.

1 Gün Önce Hazırladığınız Yazılım, 1 Gün Öncesi Kadar Güvenli Olmayabilir!

Yazılımın kişiye göre belki en can sıkıcı kısmı ise güvenlik takip olaylarıdır. Hazırladığınız bir site, sistem, kullandığınız bir yazılım 1 gün önce o gün bilinen her türlü güvenlik açığına karşı bir kalkana sahip olabilir ancak bu asla, yarın aynı şekilde güvenli olacağı anlamına gelmez.

Uzun Lafın Kısası...

Uzun lafın kısası, yabancı kaynakları sürekli olarak takip etmek, gerekli sitelerin RSS kayıtlarına abone olmak bu anlamda son derece kritik bir rol oynar. Yeri geliyor, bir İngilizce kaynakta belirtilen bu açıklamalar aylar sonra Türkçe kaynaklarda bulunabiliniyor. İş güvenlik olduğunda 1 günü bırakın, 1 saatin bile önemi çok büyük oluyor.

Dersimizin Devamında Neler Yapacağız?

Güvenlik dersimizin devamında, öncelikle bilinmesi gereken temel konulara el atacağız. Session Hijacking, Hex Hack, Posion Null Byte, SQL Injection, form güvenliği, dosya ve klasör yapılarında güvenlik, yönetici panellerinde yapılması gereken, alınabilinecek ek önlemler gibi bir çok konuya el atacağız.

Bilgimiz yeterli olduğunda güvenlik için bir PHP sınıfı (class) oluşturup, değişiklikleri çok daha kolay merkezi bir dosyadan yönetmemizi sağlayacak, işlerimizi kolaylaştıracak çalışmalara kadar birlikte devam edeceğiz.

Elbette bazı konulara girmeden önce yeterince açık olması için arada güvenlik yazıma ara verip, PHP ile ilgili farklı dersler eklemem gerekecek. Böylece konunun takibi ve anlaşılması çok daha basit bir hale getirmeye çalışarak daha fazla kişinin bu dersimizden faydalanmasını sağlayacağız.

  • Etiketler;
Ilgıt Yıldırım
Şu an full-time freelancer olarak çalışmakta ve Polonya’da yaşıyor. Boş vakitlerinde film, dizi, belgesel izlemeyi, yeni bir şeyler öğrenmek için eğitici yazılar okumayı / videolar izlemeyi seviyor. Evli. <p>Son yıllarda ticari internet projeleri üzerine yoğunlaşmış durumda. Ağırlıklı olarak PHP, MySQL, HTML5, CSS3, jQuery, JavaScript kullanıyor ve back-end hazırlıyor. Aynı zamanda ticari projeler için proje ve fikir geliştirme ile uğraşıyor.
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git