SQL Injection Nedir?




SQL Injection web site zaafiyetlerinin başında gelir. Veritabanı bulunduran dinamik siteler sql komutlarına göre içerik görüntüler. Eğer ki sitenin veritabanına giden komutlar gözden geçilirmiyorsa sitede istenilen bilgiler çalınabilir, hatta kullanıcı şifrelerinden tutun adminin şifresine kadar birçok bilgi elde edilebilir.

Misal aşağıda ki linki inceleyelim.
http://www.hepsiburada.com/liste/sony-xperia-z2/productDetails.aspx?productId=telcepsonxpriaz2&categoryId=371946

Tarayıcılarımız bu linki şu şekilde yorumluyor.

  • Hepsiburada.com linkine git.
  • Veritabanında productId'si telcepsonxpriaz2 ve categoryId'si 371946 olan içeriğin bilgilerini ekrana yansıt. 

Sql'de her alanın bir türü vardır. Mesela bir forum sitesinde kullanıcı isimlerini tutan kolon string türündedir. Kullanıcının yaşını tutan kolon ise int (integer) yani tam sayı türündedir. Bu alana yalnızca tam sayı değerler kabul eder (2,3,5,10 vs).

Peki bu alana biz özel karakter yollarsak ne olur?
Misal üstte ki linkte categoryId'sinin sonunda bir özel karakter ekleyelim.
....categoryId=371946' linki bu hale getirdiğimizde 371946' ifadesi bir tamsayı olmadığı için, eğer ki sitede bu sorguyu kontrol eden bir kod yoksa ekrana "you have an error in your sql syntax" şeklinde sql komutunda bir hata olduğu ekrana yansıyacaktır. Bu da sitede bir sql açığı olduğunu gösterir ve sql injection uygulamamıza olanak sağlar.
Fakat büyük sitelerde bu tarz sql açıklarını bulmamız mümkün değildir, çünkü veritabanına yapılan sorgular kontrol edilir ve özel karakter içeren komutları gördüğünde ekrana içerik yansıtmazlar.

Adsız

Phasellus facilisis convallis metus, ut imperdiet augue auctor nec. Duis at velit id augue lobortis porta. Sed varius, enim accumsan aliquam tincidunt, tortor urna vulputate quam, eget finibus urna est in augue.

Hiç yorum yok:

Yorum Gönder