Microsoft, uygulamamızda güvenlik amaçları için kullandığımız yerleşik işlevselliği sağlar, böylece kimse sitemizi hackleyemez veya bazı kritik bilgileri istila edemez.
ValidateAntiForgeryToken Kullanımı
Bu kavramı anlamak için basit bir örnekle deneyelim. Çok karmaşık hale getirmek istemiyorum, bu yüzden zaten Visual Studio'da bulunan bir MVC uygulaması şablonu kullanacağım. Bunu adım adım yapacağız. Hadi başlayalım.
Adım 1 - Varsayılan internet şablonuyla iki MVC uygulaması oluşturun ve bu adları sırasıyla CrossSite_RequestForgery ve Attack_Application olarak verin.
Şimdi, CrossSite_RequestForgery uygulamasının Web Config uygulamasını açın ve bağlantı dizesini aşağıda verilenle değiştirin ve kaydedin.
'
<connectionStrings> <add name="DefaultConnection" connectionString="Data Source=local\SQLEXPRESS;Initial Catalog=CSRF;
Integrated Security=true;" providerName="System.Data.SqlClient" />
</connectionStrings>
Şimdi Araçlar >> NuGet Paket Yöneticisi'ni ve ardından Paket Yöneticisi Konsolu'nu tıklayın
Şimdi, veritabanı oluşturmak için Paket Yöneticisi Konsolu'nda aşağıda belirtilen üç komutu çalıştırın.
Etkinleştir-Geçişler ekleme-taşıma ilk güncelleme-veritabanı
Önemli Notlar - Ben geliştiriciler çalışma şeklinde bu örnek yapmak istiyorum çünkü kod ilk yaklaşım ile veritabanı oluşturduk. El ile veritabanı da oluşturabilirsiniz. Seçim senin.
- Şimdi Hesap Denetleyicisi'ni açın. Burada, türü yazı olan bir kayıt yöntemi göreceksiniz. Bu yöntemin üzerinde, [ValidateAntiForgeryToken] olarak kullanılabilen bir özellik bulunmalıdır. Bu özelliği yorumlayın. Şimdi, kaydı sağ tıklayın ve Görüntüle'ye tıklayın. Burada yine html yardımcısı @ Html.AntiForgeryToken () olarak bulacaksınız. Bunu da yorumlayın. Uygulamayı çalıştırın ve kayıt düğmesine tıklayın. URL şu şekilde açılacaktır:
http: // localhost: 52269 / Hesap / Kayıt
Notlar - Artık tüm okuyucuların kafasında sorulan sorunun, bu istekleri doğrulamak için herkesin bildiğinden, bu iki yardımcıya neden yorum yapılması gerektiğini biliyorum. O zaman, hepinize bunun bunun sadece yardımcıları uygulamadan önce ve sonra farkı göstermek istediğim için olduğunu bildirmek istiyorum.
Şimdi, Attack_Application olan ikinci uygulamayı açın. Ardından, Hesap Denetleyicisi'nin Kayıt yöntemini açın. POST yöntemini aşağıda gösterilen basit yöntemle değiştirmeniz yeterlidir.
Kayıt formu
- @ Html.LabelFor (m => m.UserName) @ Html.TextBoxFor (m => m.UserName)
- @ Html.LabelFor (m => m.Şifre) @ Html.PasswordFor (m => m.Şifre)
- @ Html.LabelFor (m => m.ConfirmPassword) @ Html.PasswordFor (m => m.ConfirmPassword)
7.Şimdi, bir hacker olduğunuzu ve CrossSite_RequestForgery uygulamasında kullanıcıyı kaydedebileceğiniz URL'yi bildiğinizi varsayalım. Şimdi, Attacker_Application olarak bir Forgery sitesi oluşturdunuz ve aynı URL'yi yazı yöntemine koydunuz.
8. Şimdi bu uygulamayı çalıştırın ve kayıt alanlarını doldurun ve kayıt tıklayın. CrossSite_RequestForgery uygulamasında kayıtlı olduğunuzu göreceksiniz. CrossSite_RequestForgery uygulamasının veritabanını kontrol ederseniz, girmiş olduğunuz girişi ve girişi göreceksiniz.
- Önemli - Şimdi, CrossSite_RequestForgery uygulamasını açın ve Hesap Denetleyicisi'nde jetonu yorumlayın ve Görünümü kaydedin. Aynı işlemle tekrar kaydolmayı deneyin. Ardından, aşağıdaki gibi bir hata oluşacaktır.
'/' Uygulamasında Sunucu Hatası ________________________________________ Gerekli sahtecilik karşıtı çerez "__RequestVerificationToken" mevcut değil.
Kavram böyle söylüyor. Görünüm'e eklediğimiz şey @ Html.AntiForgeryToken () yükleme zamanında __RequestVerificationToken ve Controller yönteminde kullanılabilir [ValidateAntiForgeryToken] üretir. Bu simgeyi yayın tarihinde eşleştirin. Jeton aynıysa, bunun geçerli bir istek olduğu anlamına gelir.