Güvenli Web Application Geliştirmek

Merhabalar,

Uzun süredir web geliştiricisi olarak çalışmaktayım ve edindiğim tecrübeleri sizinle bu blog üzerinden paylaşacağım. DiaryOfInjector için hazırladığım ilk makale olacak.

Güvenli Web Application Geliştirmek


1- Projelerinizde web frameworkler kullanın. İçerisinde barındırdığı sınıf ve fonksiyonlar nedeniyle daha hızlı ve daha güvenli bir geliştirme ortamı sağlar size. Aynı zamanda MVC (http://tr.wikipedia.org/wiki/Model-View-Controller) deseni ile kodlarınız spagetti olmaz. PHP ile yazıyorsanız CodeIgniter, Symfony 2, Laravel gibi oldukça faydalı frameworkler mevcut. Python için ise Django ve Tornado.

2- Uygulamada ki GET ve POST metodlarını SQL Injection ve XSS gibi saldırılar için güvenlik fonksiyonlarından geçiriniz. Yukarı madde de yazmış olduğum hazır frameworkler bu işi oldukça kolaylaştırmaktadır.

3- Özellikle PHP ile geliştirme yapan arkadaşlar veritabanı ile kayıt çekerken GET / POST ile gönderilen sayısal bir değeri integer tipine cast etmiyor. Herşey stringden ibaret değildir. Bu oldukça önemlidir. $degisken = "1" yerine $degisken = 1; olarak tanımlayınız.

"SELECT * FROM kayit WHERE id = ". (int) $_GET['id'];

3- CSRF (http://en.wikipedia.org/wiki/Cross-site_request_forgery) ve flood saldırıları için formlarınızda GET ve POST metodları için token key kontrolleri yapınız. Aksi durumda uygulamada auth olan kullanıcıyı hedef alan exploitler geliştirilebilir. Kullanıcıyı sistemden çıkış yaptırmak için hazırladığınız handlerda bile bu token kontrolünü yapınız. Aksi durumda çıkış yap linkini iframe içerisine yerleştirerek kullanıcıyı sistemden habersiz çıkış yaptırılabilir.

4- Uygulamada özellikle auth işleminde kullanılan cookieler şifreli (secure cookie) olmalıdır. 1. maddede belirttiğim frameworklerde bunlar olmazsa olmaz sınıflardır. Örneğin PHP'de CodeIgniter ile oluşturduğumuz sesssionlar cookiede şifreli olarak tutulmaktadır.

Güvenli kodlamalar.
-
http://twitter.com/0x90kh4n