by Necat Bolpaça
8. March 2008 10:27
Birkaç gün önce yazdığım uygulamalardan birinin kod arka planında "Sql Injection" adı verilen sızmaya karşı açık bırakmış olduğumu anladım. Yaptığım denemeler sonucu Stored Procedure kullanmak dahi %% arasına yazdığım karakterin sql injection açığını meydana getirmesine engel olamıyordu. Çareyi şöyle ufak bir süzgeç hazırlayıp, sadece belli karakter ve sayı aralıklarına izin vermekte buldum.
using System.Text.RegularExpressions;
public class SqlInjection{
public static bool InjectionWhiteList(string s)
{
Regex rx = new Regex(@"^[A-Za-z0-9\sğüşıöçĞÜŞİÖÇ]+$");
return rx.IsMatch(s);
}
}
Her ne kadar eski klasik ASP günlerini hatırlatsa da, dinamik arama sorgusu oluştururken bunu engellemenin daha pratik bir yolunu bulamadığım için, bunu kullanmaya devam edeceğim bir süre.