CSRF nedir?
CSRF (Çapraz site isteği sahtekarlığı), aynı zamanda tek tıklama saldırısı/oturum sürüşü olarak da bilinir, Çince kısaltması: CSRF/XSRF. CSRF (Çapraz Site İstek Sahtekarlığı), 2007 yılında internette en büyük 20 güvenlik riski arasında listelenen bir ağ saldırı yöntemidir. SQL script enjeksiyonu ve alanlararası alan betik saldırıları gibi diğer güvenlik riskleri son yıllarda iyi biliniyor hale geldi ve birçok web sitesi bunlara karşı savunma yaptı. Ancak CSRF çoğu insan için hâlâ yabancı bir kavramdır. En ünlü Gmail bile 2007 sonlarında bir CSRF açığa sahipti; bu güvenlik sistemi hacklendi ve Gmail kullanıcılarına büyük kayıplara yol açtı.
CSRF ne yapabilir?
CSRF saldırılarını şöyle anlayabilirsiniz: bir saldırgan kimliğinizi çalmış ve adınıza kötü niyetli talepler göndermiştir. CSRF, e-posta göndermek, mesaj göndermek, hesabınızı çalmak veya hatta sizin adınıza ürün satın almak ve sanal para transferi yapmak gibi şeyler yapabilir...... Ortaya çıkan sorunlar arasında: kişisel gizlilik sızıntısı ve mülk güvenliği yer alıyor.
ASP.NET MVC AntiForgeryToken sahte karşıtı markası
ASP.NET MVC'de, form tokenları ve çerez tokenları varsayılan olarak @Html.AntiForgeryToken() kullanıldığında otomatik olarak oluşturulur. Ancak, arka planda manuel erişim sağlamak istiyorsak, System.Web.Helpers.AntiForgery sınıfını kullanmamız gerekir ve kaynak kodu izlemek isteyen arkadaşlar, aslında @Html.AntiForgeryToken() dahili çağrı yönteminin AntiForgery sınıfıyla aynı olduğunu görecektir.
Esas olarak karşılık gelen form ve çerez token'ı iki statik yöntemle elde etmek için kullanılır: AntiForgery.GetHtml() veya AntiForgery.GetTokens(oldCookieToken, out string newCookieToken, out string formToken). Ancak, GetHtml yöntemi çağrıldıktan sonra, ilgili cookie token'ın otomatik olarak oluşturulacağı ve ardından form token değeri gizli alanına sahip bir HTML kodu parçası doğrudan geri döneceği ve geri dönen değer şu şekilde olacak:
<input name="__RequestVerificationToken" type="hidden" value="8_nUk_3z0svQr9qcvRBi9SWMZ2-SYmuy9kRe9OgRobGULkb2Z4JZxRZFhR0ndeoy9hmDLDru7MFk-W4xrnL5z5T6VbkfXK7fyRk-egQBGm41"> Gizli alanın isim adı genellikle "__RequestVerificationToken" olarak sabitlenir ve değer şifreli bir güvenlik tokenıdır. Bu gizli alan genellikle gönderilecek forma yerleştirilir ve son gönderim kurabiye tokenı ile doğrulanır.
GetTokens yöntemini kullanırsanız, ilgili parametreleri girdikten sonra şifreli form ve çerez token'ı elde edebilirsiniz, ancak burada ilgili değerleri kendiniz depolamanız gerekir.
Sonra, AntiForgeryToken'ı özellikle AJAX üzerinden manuel olarak güncelleme yöntemini tanıtacağız.
Paket Kodu:
Test kodu:
Ajax talebi gönderildiğinde, aşağıdaki şekilde gösterildiği gibi __RequestVerificationToken parametrelerin otomatik olarak dahil edildiğini bulduk:
|