Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 44609|Yanıt: 1

[Kaynak] ValidateAntiForgeryToken ve AutoValidAntiforgeryToken sahtecilik karşıtı etiketler ayrıntılı olarak açıklanmıştır

[Bağlantıyı kopyala]
Yayınlandı 20.02.2021 19:57:29 | | | |
CSRF saldırılarını önlemek için asp.net mvc, ValidateAntiForgeryToken anti-sahte saldırı özelliğini sağlar ve asp.net temel çerçevesinin yeni sürümünde Microsoft, özellikle ValidateAntiForgeryToken ve AutoValidateAntiforgeryToken özelliklerini sunar Fark nedir, bu makale detaylıca açıklayacak.

CSRF saldırılarını önlemek için AntiForgeryToken ile mvc ajax
https://www.itsvse.com/thread-4207-1-1.html

ASP.NET CSRF saldırısı Ajax kapsülleme talep ediyor
https://www.itsvse.com/thread-8077-1-1.html
CSRF konsepti

CSRF Çapraz Site İstek Sahtekarlığı, XSS saldırıları gibi, son derece zararlıdır, bunu şöyle anlayabilirsiniz: saldırgan kimliğinizi çalar ve sunucu için tamamen meşru olan kötü niyetli bir istek gönderir, ancak saldırganın beklediği bir işlemi tamamlar; örneğin adınıza e-posta ve mesaj göndermek, hesabınızı çalmak, sistem yöneticileri eklemek veya hatta ürün satın almak, sanal para transferleri vb. Web A, CSRF açığa sahip bir web sitesidir, Web B ise bir saldırgan tarafından oluşturulmuş kötü amaçlı bir web sitesidir ve Kullanıcı C ise Web A'nın meşru bir kullanıcısıdır.


ASP.NET MVC CSRF saldırılarına karşı

Görünüm sayfasında @Html.AntiForgeryToken() ile bir etiket ekleyin ve kullanıcı sayfaya eriştiğinde, arka uç otomatik olarak etiketle gizli bir html kodu oluşturur, aşağıdaki gibi:


<giriş adı="__RequestVerificationToken" type="gizli" value="CfDJ8FBn4LzSYglJpE6Q0fWvZ8WDMTgwK49lDU1XGuP5-5j4JlSCML_IDOO3XDL5EOyI_mS2Ux7lLSfI7ASQnIIxo2ScEJvnABf9v51TUZl_iM2S63zuiPK4lcXRPa_KUUDbK-LS4HD16pJusFRppj-dEGc" />
Arka plan kontrolcüsü ayarlanmalıdır [AntiForgeryToken'ı Validasyon] form gönderimlerinin sahteliğini önlemek için bir özellik.

ValidateAntiForgeryToken ve AutoValidAntiforgeryToken farklıdır

AutoValidateAntiforgeryTokenAuthorizationFilter, ValidateAntiforgeryTokenAuthorizationFilter'ı devralır, ancak yalnızca ShouldValidate yöntemini yeniden yazar.

AutoValidateAntiforgeryToken özelliği, tüm güvenli olmayan HTTP yöntemleri için sahte eşyaların doğrulanmasına neden olur.GET, HEAD, OPTIONS ve TRACE dışındaki HTTP yöntemleri için hepsi sahte bir token gerektirir。 Bu, uygulamanın varsayılan olarak sahtecilik karşıtı token doğrulamasını tetiklemek için küresel bir filtre olarak uygulanabilir.

Bağlantı girişi görünür.

AutoValidateAntiforgeryTokenAttribute, AutoValidateAntiforgeryTokenAuthorizationFilter çağrısını doğrular; bu da ValidateAntiforgeryTokenAuthorizationFilter,ShouldValidate yöntemi yeniden yazıldı, doğru döndürmek doğrulama gerektiriyor ve yanlış döndürmek doğrulanmaz, aşağıdaki şekilde gösterildiği gibi:

Kaynak kodunu analiz edin:



AutoValidAntiforgeryTokenAttribute, sahte karşıtı token doğrulamasının POST, PUT, PATCH ve DELETE gibi tüm güvensiz yöntemlere küresel olarak uygulanmasını sağlar. Yani [ValidateAntiForgeryToken] özelliğini gerektiren her eyleme eklemenize gerek yok.

Bunu kullanmak için, ConfigureServices'in Startup sınıfı metoduna aşağıdaki kodu ekleyin:


Sahte karşıtı kimlik doğrulamayı görmezden gelmeniz gerekirse, [IgnoreAntiforgeryTokeneyleme atfeder.

Bazen, bir kontrolcüde birden fazla isteği etiketlemek zorunda kalırsınız, ancak sahte yapılması gerekmeyen bazı istekler, örneğin çeşitli GET tabanlı işlemler gibi. Süreci daha kolay ve konforlu hale getirmek için kullanabileceğiniz birkaç araç vardır. İlki AutoValidatedAntiforgeryToken özelliğidir. ValidatedAntiForgeryToken özelliği gibi davranıyor. Ancak, veri alımı için tasarlanmış GET, HEAD, OPTIONS ve TRACE yöntemleri tarafından çağrılan eylemleri otomatik olarak görmezden gelir. Bu, veriyi değiştirebilen tüm yöntemlere hızlı ve kolay bir şekilde sahte karşıtı yöntemler eklemenizi sağlar; bu yöntemler verinin nasıl alındığını etkilemez.

Aşağıdaki kod, AutoValidateAntiforgeryToken özelliğine bir örnektir:


Bu örnekte, her iki normal Index işlemi (GET) kaynak ne olursa olsun çalışır; POST yöntemiyle Index işlemi ve Delete yöntemi olarak RemoveUser işlemi istemcinin sahte karşıtı bir token kullanmasını gerektirir.

İlgili bilgileri özelleştirin

Birçok kişi, oluşturulan gizli alan adının kendi adıyla değiştirilip değiştirilemeyeceğini ve çerezin adının kendi adıyla değiştirilip değiştirilemeyeceğini merak edebilir.

Cevap evet, kısaca gösterelim:

Startup'ın ConfigureServices yönteminde, varsayılan adı buna göre değiştirmek için şunları ekleyin.


Not: asp.net çekirdek ile asp.net arasındaki en büyük fark,Core, doğrulama parametrelerini bir başlık talep ederek aktarmayı destekler, form oluşturmak için değil!

private const dizisi AntiforgeryTokenFieldName = "__RequestVerificationToken";
private const string AntiforgeryTokenHeaderName = "RequestVerificationToken";


Kaynak kodunu görebilirsiniz:Bağlantı girişi görünür.

Test kodu:





Sonuç: test1 yöntemine erişmeye çalıştığımda 400 hatası döner, test2 yöntemine eriştiğimizde geçtiğimiz str parametresi döner ve AutoValidateAntiforgeryToken özelliğinin GET isteğini engellemediğini görebilirsiniz.

(Son)




Önceki:Fiddler bağlantıları değiştiriyor, yönlendirme taleplerini talep ediyor
Önümüzdeki:[dönüş] SQL Server SQL Count
 Ev sahibi| Yayınlandı 8.07.2023 22:07:08 |
ASP.NET MVC XSS Tehlikeli İçerik Doğrulaması (ValidateInput) talep ediyor
https://www.itsvse.com/thread-10624-1-1.html
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com