Czym jest CSRF?
CSRF (fałszowanie żądań międzysymetrycznych), znane również jako atak jednym kliknięciem/jazda sesji, chiński skrót: CSRF/XSRF. CSRF (Cross Site Request Forgery) to metoda ataku sieciowego, która w 2007 roku została uznana za jedno z 20 największych zagrożeń bezpieczeństwa w Internecie. Inne zagrożenia bezpieczeństwa, takie jak wstrzykiwanie skryptów SQL czy ataki na skrypty między domenami lokalnymi, stały się w ostatnich latach dobrze znane, a wiele stron internetowych broniło się przed nimi. Jednak CSRF wciąż jest dla większości ludzi obcym pojęciem. Nawet najsłynniejszy Gmail miał lukę w CSRF pod koniec 2007 roku, która została zhakowana i spowodowała ogromne straty dla użytkowników Gmaila.
Co może zrobić CSRF?
Ataki CSRF można zrozumieć w ten sposób: atakujący ukradł twoją tożsamość i wysłał złośliwe żądania na twoje nazwisko. CSRF może wysyłać e-maile, wiadomości, kraść twoje konto, a nawet kupować towary i przelewać wirtualną walutę w Twoim imieniu...... Problemy powstałe obejmują: wycieki prywatności osobistej oraz bezpieczeństwo nieruchomości.
ASP.NET AntyfałszerstwoZnak przeciwfałszujący Antyfałszerstwo Token
W ASP.NET MVC tokeny formularzy i tokenów cookie są domyślnie generowane automatycznie za każdym razem, gdy @Html.AntiForgeryToken() jest używany na stronie widoku. Jednak jeśli chcemy uzyskać ręczne wyszukiwanie w tle, musimy użyć klasy System.Web.Helpers.AntiForgery, a znajomi zainteresowani przeglądem kodu źródłowego odkryją, że metoda wewnętrznego wywołania @Html.AntiForgeryToken() jest taka sama jak w klasie AntiForgery.
Jest głównie używany do uzyskania odpowiedniego formularza i tokena cookie za pomocą dwóch metod statycznych: AntiForgery.GetHtml() lub AntiForgery.GetTokens(string oldCookieToken, out string newCookieToken, out string formToken). Należy jednak zauważyć, że po wywołaniu metody GetHtml automatycznie zostanie wygenerowany odpowiedni token ciasteczka, a następnie fragment kodu HTML z ukrytą polem tokenu formularza zostanie zwrócony bezpośrednio, a zwrócona wartość będzie w następującym formie:
<input name="__RequestVerificationToken" type="hidden" value="8_nUk_3z0svQr9qcvRBi9SWMZ2-SYmuy9kRe9OgRobGULkb2Z4JZxRZFhR0ndeoy9hmDLDru7MFk-W4xrnL5z5T6VbkfXK7fyRk-egQBGm41"> Nazwa ukrytego pola jest zazwyczaj ustalana na "__RequestVerificationToken", a wartość ta jest zaszyfrowanym tokenem bezpieczeństwa. To ukryte pole jest zwykle umieszczane w formularzu do przesłania, a ostateczne przesłanie jest weryfikowane na tokenie ciasteczka.
Jeśli użyjesz metody GetTokens, możesz uzyskać zaszyfrowany formularz i token cookie po przesłaniu odpowiednich parametrów, ale tutaj musisz samodzielnie przechować odpowiednie wartości.
Następnie przedstawimy metodę ręcznej aktualizacji AntiForgeryToken, głównie za pomocą AJAX.
Kod pakietu:
Kod testowy:
Stwierdziliśmy, że podczas wysyłania żądania Ajax automatycznie uwzględniane są __RequestVerificationToken parametry, jak pokazano na poniższym rysunku:
|