Sunucu Taraflı E-posta Adresi Validasyonu

ValidasyonBir e-bülten üyeliği yaptığınızı düşünelim. Kullancının adını soyadını ve email adresini bırakarak güncel olarak müşterinizden haberdar olmak istediği bir sistem kuracaksınız. Elbetteki asp.net’in validator kontrollerini kullanacaksınız. Ancak en basit yoldan alacağınız saldırı şu olacaktır: kullanıcı Mozilla Firefox ile sitenize bağlanacak ve javasciptlerini etkisizleştirecektir. Böylece e-posta için kullandığınız textbox’a istediği kodu yazıp veritabanınıza gönderme imkanına sahip olacaktır. Bu yüzden bu alanlardan gelecek verileri server-side yani sunucu tarafında da kontrol etmeniz gerekmektedir.

Page.IsValid kontrolünü yine her ihtiyacımıza karşılık kullanıyoruz. E-mail regular expression validator’ın ürettiği regex’in aynısını bir de sunucu tarafında kontrol ettiriyoruz ancak bu validasyon türkçe karakter ile girilen e-mail adreslerinde olumsuz sonuç döndürüyor. Ben buna ek olarak TurkishOk isminde bir değişken kullanarak gerekli kontrolleri kullanıcıyorum. Aşağıda yazdığım kodu sunucu tarafındaki kodlarınıza eklediğinizde sağlıklı bir e-bülten listesine sahip olabilirsiniz.

if (Page.IsValid)
        {
            Regex regEmail = new Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
            Match matchEmail = regEmail.Match(NewsletterEmailTxt.Text);
            bool TurkishOk = (!(NewsletterEmailTxt.Text.Contains('İ') || NewsletterEmailTxt.Text.Contains('ı') || NewsletterEmailTxt.Text.Contains('Ü') || NewsletterEmailTxt.Text.Contains('ü') || NewsletterEmailTxt.Text.Contains('Ğ') || NewsletterEmailTxt.Text.Contains('ğ') || NewsletterEmailTxt.Text.Contains('Ş') || NewsletterEmailTxt.Text.Contains('ş') || NewsletterEmailTxt.Text.Contains('Ç') || NewsletterEmailTxt.Text.Contains('ç') || NewsletterEmailTxt.Text.Contains('Ö') || NewsletterEmailTxt.Text.Contains('ö')));
            if (matchEmail.Success && TurkishOk)
            {
                bool done = MyHelpers.NewsletterSubscription(NewsletterNameTxt.Text, NewsletterEmailTxt.Text);

                if (!done)
                {
                    NewsErrorLbl.Visible = true;
                    NewsErrorLbl.Text = "Kayıt işleminiz başarısız. Lütfen tekrar deneyin.";
                }
                else
                {
                    NewsErrorLbl.Visible = false;
                    Response.Redirect("~/e-bulten-tesekkurler.aspx");
                }
            }
            else
            {
                NewsErrorLbl.Visible = true;
                NewsErrorLbl.Text = "Lütfen e-posta adresinizi kontrol edin.";
            }
        }
        else
        {
            NewsErrorLbl.Visible = true;
            NewsErrorLbl.Text = "Lütfen formda gerekli alanları doğru bir şekilde doldurun.";
        }

Tabii ki namespace’lerinize aşağıdaki satırı eklemeyi unutmayın.


using System.Text.RegularExpressions;
Recent Posts

Leave a Comment


*