Czy możesz wyjaśnić cel ValidateAntiForgeryToken i pokazać mi przykład ValidateAntiForgeryToken
w MVC 4?
Nie mogłem znaleźć przykładów wyjaśniających ten atrybut?
c#
asp.net-mvc
asp.net-mvc-4
Tabriz Atayi
źródło
źródło
.BeginForm
pomocnika. Tak więc ta rzecz jest dostępna automatycznie, jak w RailsOdpowiedzi:
Obsługa zapobiegania fałszerstwom MVC zapisuje unikalną wartość do pliku cookie obsługującego tylko HTTP, a następnie ta sama wartość jest zapisywana w formularzu. Po przesłaniu strony pojawia się błąd, jeśli wartość pliku cookie nie zgadza się z wartością formularza.
Należy pamiętać, że ta funkcja zapobiega fałszowaniu żądań w różnych witrynach . Oznacza to, że formularz z innej witryny publikuje w Twojej witrynie próbę przesłania ukrytej treści przy użyciu poświadczeń uwierzytelnionego użytkownika. Atak polega na nakłonieniu zalogowanego użytkownika do przesłania formularza lub po prostu programowym uruchomieniu formularza podczas ładowania strony.
Ta funkcja nie zapobiega atakom polegającym na fałszowaniu danych lub manipulowaniu danymi.
Aby go użyć, udekoruj metodę akcji lub kontroler
ValidateAntiForgeryToken
atrybutem i umieść wywołanie@Html.AntiForgeryToken()
w formularzu wysyłającym wiadomość do metody.źródło
Podstawowym celem atrybutu ValidateAntiForgeryToken jest zapobieganie atakom polegającym na fałszowaniu żądań w różnych witrynach.
Fałszowanie żądań między witrynami to atak, w którym szkodliwy element skryptu, złośliwe polecenie lub kod są wysyłane z przeglądarki zaufanego użytkownika. Więcej informacji na ten temat można znaleźć na stronie http://www.asp.net/mvc/overview/security/xsrfcsrf-prevention-in-aspnet-mvc-and-web-pages .
Jest prosty w użyciu, musisz ozdobić metodę za pomocą atrybutu ValidateAntiForgeryToken, jak poniżej:
Wywodzi się z przestrzeni nazw System.Web.Mvc.
Twoim zdaniem dodaj ten kod, aby dodać token, dzięki czemu będzie on używany do sprawdzania poprawności formularza po przesłaniu.
źródło
W programie ASP.Net Core token zapobiegający fałszowaniu jest automatycznie dodawany do formularzy, więc nie trzeba go dodawać,
@Html.AntiForgeryToken()
jeśli używasz elementu formy brzytwy lub jeśli używasz IHtmlHelper.BeginForm i jeśli metoda formularza nie jest GET.Wygeneruje element wejściowy dla formularza podobny do tego:
<input name="__RequestVerificationToken" type="hidden" value="CfDJ8HSQ_cdnkvBPo-jales205VCq9ISkg9BilG0VXAiNm3Fl5Lyu_JGpQDA4_CLNvty28w43AL8zjeR86fNALdsR3queTfAogif9ut-Zd-fwo8SAYuT0wmZ5eZUYClvpLfYm4LLIVy6VllbD54UxJ8W6FA">
A gdy użytkownik prześle formularz, ten token jest weryfikowany po stronie serwera, jeśli włączono sprawdzanie poprawności.
[ValidateAntiForgeryToken]
atrybutu można użyć przeciwko działaniom. Żądania dotyczące działań, w których zastosowano ten filtr, są blokowane, chyba że żądanie zawiera prawidłowy token antygraniczny.[AutoValidateAntiforgeryToken]
atrybut może być użyty przeciwko kontrolerom. Ten atrybut działa identycznie jak atrybut ValidateAntiForgeryToken, z tym wyjątkiem, że nie wymaga tokenów dla żądań wykonanych przy użyciu następujących metod HTTP:GET HEAD OPTIONS TRACE
Informacje dodatkowe: https://docs.microsoft.com/pl-pl/aspnet/core/security/anti-request-forgery
źródło
Microsoft zapewnia nam wbudowaną funkcjonalność, której używamy w naszej aplikacji do celów bezpieczeństwa, więc nikt nie może włamać się na naszą stronę ani atakować niektórych ważnych informacji.
Z celu ValidateAntiForgeryToken w aplikacji MVC firmy Harpreet Singh:
źródło