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


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 Defence
  • Data 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 giriş işlemi ;

sql injection korunma

Gelen verileri ise aşağıdaki gibi bir şekilde işleme sokuyorsunuz.Dönen veri var ise giriş işlemi başarılı gibi düşünüyoruz ;

Password değeri istediğimiz şekilde gelirse hiç bir zaman sorun olmayacak.Fakat buna aşağıda ki gibi bir sql injection denemesi yapalım ;

sql injection korunma


Hoop sistemin içindesiniz. Sonda yer alan 1=1 true döndüreceği için önceki şartın artık bir anlamı kalmıyor ve login işlemi başarıyla sonlanarak Sql Injection gerçekleşiyor.

SQL Injection Korunma


  • Bu tarz saldırılara karşı savunma yapmak için başta Entity Framework ve Linq süper ikilisini projenizde kullanmaya gayret edin.EF ve Linq sizin yerinize bu saldırıları native olarak ekarte etmektedir.
  • Bir diğer husus ise Sql Injection ve XSS açığı birbiriyle ilişkilidir. Sql Injection saldırılarını önlemek için sitede yer alan XSS açıklarını kapatmak gerekir.Yazdığım yazı Asp.Net Web Güvenliği : XSS Attacks
  • Bir diğer madde ise Data Validation . Giren girdileri belli formatlara uygun olarak girmeye zorlayarak minimize edebilirsiniz.


Injection örneği Codebash üzerinden uyarlanarak alıntılanmıştır.

Yorumlar

Bu blogdaki popüler yayınlar

Asp.Net Mvc Bundle Kullanımı

Brackets Eklentileri

Asp.Net MVC ile Hava Durumu