22 Eylül 2015 Salı

MVC AntiForgeryToken Kullanımı

Merhaba yine bir MVC bilgisi ile birlikteyiz. Genel olarak web yazılımcıları en azından ben öyleyim kendi sitelerini kale gibi görürler. Yani kalenin kralı da biz oluyoruz aslında. Her krallıkta olduğu gibi kral kendi topraklarına ve kalesine kimlerin girip çıktığını bilmek ister. Tabi bunu kapıda oturup kendisi yapacak hali yok. Muhafız denen bir şey var. İşte AntiForgeryTokenlar da bizim muhafızlarım. Küçük bir demoyla ne demek istediğimi daha detaylı anlatayım.



Örnek olarak benim MVC de Attack adında ActionResultlarım var. Tabi bunun HttpGet ve HttpPostları da var. Ben sayfama girdiğimde HttpGet aşamasında görüntüleme HttpPost aşamasında da genel olarak silme, ekleme, güncelleme vb. gibi işlemler yapıyorum. Buraya kadar her şey çok güzel. Peki HttpPost aşamasında dışarıdan gelen saldırıları nasıl engelleyeceğim. İşte engelleyemediğimiz bir durum.

mvc antiforgerytoken

ActionResultlarım görüldüğü gibi savunmasız ve AntiForgeryToken  kullanmadım. Kısacık bir html oluşturuyorum.
mvc antiforgerytoken

Html de görüldüğü gibi hedef Urlimi belirttim. Birde id verdim. Yani HttpPost'a veride gönderdim. Bakalım ne olacak.
Not : Htmli çalıştırmadan önce proje debug modda çalışır olarak bırakıyorum.

mvc antiforgerytoken
Gördüğünüz gibi yakalandık :) İşte bu durumu engellemek için gelin AntiForgeryToken  eklediğimizde neler oluyor bakalım.

View'ımıza @Html.AntiForgeryToken() ekliyoruz ve bir de HttpPost kısmına [ValidateAntiForgeryToken] attribute'ünü ekliyoruz. Bakalım şimdi ne olacak.

mvc antiforgerytoken
Oooooo işe yaradı. Yani dışarıdan ataklara karşı en azından küçük de olsa bir önlem almış olduk. Tabi daha çok güvenlik unsuru koymamız lazım ama şimdilik bu kadar. Hadi güvenli siteler :)



4 yorum:

  1. Tsk ederiz paylaşım için fakat yakalanınca ne oluyor anlıyamadım.

    YanıtlaSil
  2. Dışarıdan javascript ataklarıyla verileriniz silinebilir, değiştirilebilir. Artık siz ne kadarına izin verdiyseniz.

    YanıtlaSil