架构师_程序员_码农网

K Parolayı al
Kayıt Olun

QQ登录

Başlamak için sadece bir adım

Arama
Görüntüleme:25604|Yanıtlar: 1
打印 上一主题 下一主题

[Bilgi]ValidateAntiForgeryToken ve AutoValidateAntiforgeryToken

[Bağlantıyı kopyala]
D 跳转到指定楼层
sahibi
发表于 2021-2-20 19:57:29|只看该作者回帖奖励|TersGözat|Okuma Modu
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önlendirmesi
Sonraki: [Rapor]SQL Server Koşul Eklemede SQL Sayısı
Çiftçi ağı kodu, sadece uygulama sürecinde yayınlandı, teknik zorluklarla karşılaştı, başkalarını yanıltmayın.
Durumun böyle olup olmadığından emin değilim, ama öyle olduğunu düşünüyorum.

asp.net mvc asenkron istek formu

Bunu yapabileceğimden emin değilim.
sahib|2023-7-8 22:07:08 tarihinde gönderildi|Sadece bu yazarı görün
ASP.NET MVC XSS Tehlikeli İçerik Doğrulama İsteği (ValidateInput)
h ttps:// www.itsvse.com/thread-10624-1-1.html
Kod çiftçi ağı, sadece uygulama sürecinde yayınlandı, teknik zorluklarla karşılaştı, başkalarını yanıltmayın.
Geri gönderi yapabilmeniz için giriş yapmanız gerekmektedir Giriş Yap | Kayıt Ol

İntegral kurallarının bu versiyonu


YASAL UYARI: Code Farmer tarafından yayınlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amacıyla kullanılır; yukarıdaki içerikler ticari veya yasadışı amaçlarla kullanılamaz, aksi takdirde tüm sonuçlar kullanıcıların kendileri tarafından karşılanır. Bu site bilgileri ağdan alınmıştır, telif hakkı anlaşmazlığının bu site ile hiçbir ilgisi yoktur. Yukarıdaki içeriği indirdikten sonraki 24 saat içinde bilgisayarınızdan tamamen kaldırmalısınız. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kaydı satın alın ve daha iyi orijinal hizmet alın. Herhangi bir ihlal varsa, bununla ilgilenmek için lütfen bizimle e-posta yoluyla iletişime geçin.

Posta To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-19 00:45

Hızlı YanıtBaşadön Listeye dön