- toms ayakkabı outlet
- 16373
|
CSRF saldırılarının önlenmesinde asp.net mvc ValidateAntiForgeryToken sahtecilik karşıtı saldırı özellikleri sağlarken, asp.net core framework'ün yeni sürümünde Microsoft AutoValidateAntiforgeryToken özellikleri, özel ValidateAntiForgeryToken ve AutoValidateAntiforgeryToken farkı nedir, bu makale detaylı bir açıklama yapacaktır.
CSRF saldırılarını önlemek için AntiForgeryToken ile mvc ajax h ttps:// www.itsvse.com/thread-4207-1-1.html
ASP.NET CSRF Saldırısı Ajax İstek Kapsüllemesi h ttps:// www.itsvse.com/thread-8077-1-1.html CSRF Kavramları
CSRF Cross-Site Request Forgery (Siteler Arası İstek Sahteciliği), XSS saldırıları ile birlikte büyük bir tehlike arz eder, bunu şu şekilde anlayabilirsiniz: saldırgan kimliğinizi çalar, sizin adınıza sunucuya kötü niyetli bir istek gönderir bu istek tamamen meşrudur, ancak saldırgan Adınıza posta göndermek, mesaj göndermek, hesabınızı çalmak, sistem yöneticisini eklemek ve hatta mal satın almak, sanal para transferleri vb. gibi bir işlem. Aşağıdaki gibi: Web A, CSRF güvenlik açığı olan web sitesi, Web B, saldırgan tarafından oluşturulan kötü amaçlı web sitesi ve Kullanıcı C, Web A web sitesinin yasal kullanıcısıdır.
CSRF saldırılarına karşı ASP.NET MVC
Görünüm sayfasında, bir token eklemek için @Html.AntiForgeryToken() kullanın, kullanıcı sayfayı ziyaret ettiğinde, arka uç otomatik olarak aşağıdaki gibi token'dan gizli bir html kodu oluşturacaktır:
<input name="__RequestVerificationToken" type="hidden" value="" CfDJ8FBn4LzSYglJpE6Q0fWvZ8WDMTgwK49lDU1XGuP5-5j4JlSCML_IDOO3XDL5EOyI_mS2Ux7lLSfI7ASQnIIxo2ScEJvnABf9v51TUZl_iM2S63zuiPK4lcXRPa_ KUUDbK-LS4HD16pJusFRppj-dEGc" /> Sahte form gönderimlerini önlemek için arka uç denetleyicisinin [ValidateAntiForgeryToken ] özelliğini ayarlaması gerekir.
ValidateAntiForgeryToken ve AutoValidateAntiforgeryToken arasındaki fark
AutoValidateAntiforgeryTokenAuthorizationFilter, ValidateAntiforgeryTokenAuthorizationFilter'dan miras alır ve yalnızca ShouldValidate yöntemini geçersiz kılar.
AutoValidateAntiforgeryToken Tüm güvensiz HTTP yöntemleri için antiforgery belirtecinin doğrulanmasına neden olan öznitelik. GET, HEAD, OPTIONS ve TRACE dışındaki tüm HTTP yöntemleri için antiforgery belirteçleri gereklidir. Bu, varsayılan olarak uygulama sahteciliği önleme belirteci doğrulamasını tetiklemek için genel bir filtre olarak uygulanabilir.
h ttps:// github.com/dotnet/aspnetcore/blob/c925f99cddac0df90ed0bc4a07ecda6b054a0b02/src/Mvc/Mvc.ViewFeatures/src/Filters/ AutoValidateAntiforgeryTokenAuthorisationFilter.cs
AutoValidateAntiforgeryTokenAttribute, AutoValidateAntiforgeryTokenAuthorizationFilter çağrısını doğrular. AutoValidateAntiforgeryTokenAuthorizationFilter , ValidateAntiforgeryTokenAuthorizationFilter'dan miras alır ve ShouldValidate yöntemini geçersiz kılar. true değeri doğrulanması gerektiği anlamına gelir, false değeri ise aşağıdaki şekilde gösterildiği gibi doğrulanmayacaktır:
Kaynak kodu analiz edin:
AutoValidateAntiforgeryTokenAttribute, POST, PUT, PATCH ve DELETE gibi tüm güvensiz yöntemlere genel olarak sahteciliğe karşı belirteç doğrulaması uygulanmasına olanak tanır, bu nedenle [ValidateAntiForgeryToken] özniteliğini gerektiren her eyleme eklemenize gerek yoktur. ihtiyacı olan her eyleme ekleyebilirsiniz.
Bunu kullanmak için, ConfigureServices'in Startup sınıfı yöntemine aşağıdaki kodu ekleyin:
Sahteciliğe karşı kimlik doğrulamasını yok saymanız gerekiyorsa, eyleme [IgnoreAntiforgeryToken ] özniteliğini ekleyebilirsiniz.
Bazen bir denetleyicide birden fazla isteği tokenize etmeniz gerekirken aynı zamanda çeşitli GET tabanlı işlemler gibi bazı isteklerin sahtesinin yapılmamasına ihtiyaç duyabilirsiniz. Süreci daha kolay ve rahat hale getirmek için kullanabileceğiniz birkaç araç vardır. Bunlardan ilki AutoValidateAntiforgeryToken özelliğidir. ValidateAntiForgeryToken özelliğine benzer şekilde davranır. Ancak, veri almak için tasarlanmış yöntemler tarafından çağrılan eylemleri otomatik olarak yok sayar: GET, HEAD, OPTIONS ve TRACE Bu, verileri alan yöntemleri etkilemeden verileri değiştirebilen tüm yöntemlere sahteciliğe karşı yöntemleri hızlı ve kolay bir şekilde eklemenizi sağlar.
Aşağıdaki kod AutoValidateAntiforgeryToken özelliğine bir örnektir:
Bu örnekte, hem normal Dizin işlemleri (GET) kaynaktan bağımsız olarak çalışacak, hem de POST yöntemleriyle Dizin işlemleri ve Delete yöntemleri olarak RemoveUser işlemleri istemcinin sahteciliğe karşı bir belirteç kullanmasını gerektirecektir.
İlgili bilgileri özelleştirme
Oluşturulan gizli alanın adının kendi adlarıyla değiştirilebileceğini ve çerezin adının kendi ~~ olarak değiştirilebileceğini düşünen birçok insan olabilir.
Cevap evet, işte basit bir gösteri:
Başlangıç'ın ConfigureServices yönteminde, varsayılan adı uygun şekilde değiştirmek için aşağıdaki içeriği ekleyin.
Not: asp.net core ile asp.net arasındaki en büyük fark, core 'un doğrulama parametrelerini form üzerinden değil, istek başlığı üzerinden geçirmeyi desteklemesidir!
private const string AntiforgeryTokenFieldName = "__RequestVerificationToken"; private const string AntiforgeryTokenHeaderName = "RequestVerificationToken";
Kaynak kodu görüntüleyebilirsiniz: https: //github.com/dotnet/aspnetcore/blob/c925f99cddac0df90ed0bc4a07ecda6b054a0b02/src/Antiforgery/src/Internal/ DefaultAntiforgery.cs
Test kodu:
Sonuç: test1 metoduna erişmeye çalıştığınızda 400 hatası döndürür ve test2 metoduna eriştiğinizde de geçirdiğimiz str parametresini döndürür, böylece AutoValidateAntiforgeryToken özelliğinin GET isteklerini engellemediğini görebilirsiniz.
(son) |
Önceki: Fiddler bağlantıları değiştirme, istek yönlendirme yönlendirmesiSonraki: [Rapor]SQL Server Koşul Eklemede SQL Sayısı
|