Kayıtlar

Şubat, 2016 tarihine ait yayınlar gösteriliyor

Asp.Net Web Güvenliği

Asp.Net ve diğer tüm web uygulamaların da dikkat etmemiz gereken bazı güvenlik maddeleri ve saldırı çeşitleri mevcut. Dilden bağımsız olarak genellikle web mantığının olduğu tüm site ve uygulamalardan bu tür açık ve saldırılara gebedir. Her dilin yöntemi ve savunma mekanizması aynı olmamakla birlikte saldırı çeşitleri mantık olarak hep aynıdır.

Önceki blog yazılarımda  fikir vermesi ve daha güvenli web uygulamaları geliştirebilmemiz için popüler saldırı çeşitlerini paylaşarak çözüm yollarını masaya yatırmıştım. Şimdi o yazılara tek bir yazıdan ulaşılabilmesi için bir index görevi görecek bu yazıyı yayınlıyorum.

Asp.Net Web Güvenliği Yazı Dizisi (güncellenecektir)

AspNet Web Güvenliği : SQL Injection
AspNet Web Güvenliği : XSS (Cross Site Scripting)
AspNet Web Güvenliği : CSRF Attack
AspNet Web Güvenliği : Insecure Direct Object References


Ekstra

SSL güvenliği için zamanında ferruh mavituna 'nın yazmış olduğu Güvenli SSL Kullanımı yazısı okunuz.Sitenizi tüm açıklara karşı önlemlerinizi a…

Asp.Net Web Güvenliği : XSS Attacks

XSS (Cross Site Scripting)

XSS pek önemsenmeyen fakat başınıza büyük sıkıntılar açabilecek bir açıktır.Genellikle querystring üzerinden veya site üzerinde yer alan inputlar üzerinden gerçekleştirilir.Sql Injection ve XSS birbirleriyle ilişkilidir. Herhangi birinde bir eksiklik var ise her ikisine açık doğurmuş oluruz.

Kısa bir örnek olarak, kullanıcı adı ve parola yer alan bir kullanıcı formunda XSS saldırıya ön planda tutmadan formu hazırladıysanız herhangi bir input değerine javascript kodu yazılabilir ve Sql Injection saldırısı denenebilir.Bakınız : Asp.Net Web Güvenliği : Sql Injection


XSS saldırılarından korunmak için başlıca yöntemler ;
Asp.Net RequestValidationOutput EncodingBrowser XSS DefenceORM (Entity Framework , Hibernate , vb)
Asp.Net Request Validation

Mvc projelerimizde varsayılan olarak Action methoduna gönderilen değerlerin html veya script kodu içerip içermediğni Asp.Net bizim yerimize otomatik olarak denetliyor ve request atılmasını engelleyerek HttpRequestValidationExc…

Asp.Net Web Güvenliği : CSRF Attacks

Web güvenliği serimizin başka bir konusu CSRF (Cross-Site Request Forgery) saldırısı ve savunma yöntemleri. MVC projelerimizde bu saldırıyı çok kolay bir şekilde dekarte edebiliyoruz.Hemen açıklamaya çalışayım.

Öncelikle CSRF nedir kabaca üzerinden geçelim. Saldırgan kişi , sitemiz üzerinden login oldu ve bir session oluşturdu. Saldırgan , aynı zamanda kendi hazırladığı bir site var ve bu site üzerinden bizim sitenin fonksiyonlarını ve servislerini çağırmaya çalışıyor (aynı form ve buton gibi). Session açtığı için güvensiz siteden çağrılan method sanki bizim sitenin üzerinden çağrılmış gibi işlem görecektir. Amacımız bunu engellemektir.

Mvc projelerimizde cshtml sayfalarımızda get ve post yaptığımız form nesnelerinde kullanmalıyız. HtmlHelper.AntiForgeryToken methodu yardımıyla aşağıdaki gibi kolayca form nesnemize ekliyoruz ;



Daha sonra Controller tarafında çağrılan Action üzerinde aşağıdaki gibi bir FilterAttribute ekliyoruz ;

İşte bu kadar . Bu şekilde CSRF saldırılarını önlemiş b…

Asp.Net Web Güvenliği : SQL Injection

Resim
SQL Injection

Sql Injection genel olarak sorguları manipüle ederek database üzerinde CRUD işlemleri yapabilmek için izlenen saldırı çeşididir.Bu saldırıyı yapmak için izlenen yollar genellikle querystring üzerinden veya sitede yer alan herhangi bir input üzerinden olabilir.Asp.Net MVC projelerimizde aşağıda yer alan çözümleri uygulayarak kolay bir şekilde çözebiliriz.

Sql Injection korunma yöntemleri ise ;

ORM (Entity Framework , Hibernate)XSS DefenceData Validation

Bir örnek üzerinden açıklamaya çalışıp nasıl korunabiliriz bakalım ;

Özellikle herhangi bir Object Relational Mapping (ORM) aracı kullanmıyorsanız özellikle input veya querystring üzerinden gelen ifadeyi direkt sql sorgusuna dahil ediyorsanız çok büyük bir açığınız var demektir.

Entity Framework (EF) kullandığınız takdirde manuel bir sql sorgusu yazmayacağınız ve objeler üzerinden sorgulamalar yapacağınız için dışarıdan gelen herhangi bir Injection denemesi duvara çarpacaktır.

Aşağıda ki gibi bir formunuz var ve basit bir gir…

Asp.Net Web Güvenliği : Insecure Direct Object References

Asp.Net MVC Web Güvenliği yazı dizisinin ilk bölümünü Insecure Direct Object References başlığına ayırdım. Bu yazı dizisinin amacı özellikle web uygulamalarında yer alan zafiyetlerini inceleyip çözüm yollarını paylaşacağım.

Insecure Direct Object References

Hemen anlaşılır bir özet geçmek gerekirse site üzerinde bir fotoğraf , bilgi , profil detayı gibi detayları görüntülemek için bir link gerekmektedir. Örnek linkimiz ; site/foto?name=ayşe eğer siz böyle bir yapı kurduysanız otomatik olarak başlığımızda ki zafiyete açık vermiş oluyorsunuz , çünkü deneme yanılma yöntemiyle (brute force) sisteminizde yer alan tüm fotoğrafları saldırgan kişi bilgisayarına indirebilir ve farklı amaçlar için kullanabilir.

Başka bir örnek verecek olursak site/profil?id=12 diyerek bir profile yönlendirme yapıyorsanız ve gerekli kontrolleri yapmadıysanız deneme yanılma yöntemiyle başka kişilerin profil bilgileri ele geçirilebilir.

Yukarıda yer alan örneklerde ki gibi açıkları minimize edebilmek için aşağıdak…