|
|
Postitatud 20.02.2021 19:57:29
|
|
|
|

CSRF-rünnakute vältimiseks pakub asp.net mvc ValidateAntiForgeryToken võltsimisvastast rünnakut ning uues asp.net põhiraamistikus pakub Microsoft AutoValidateAntiforgeryToken funktsiooni, täpsemalt ValidateAntiForgeryToken ja AutoValidateAntiforgeryToken Mis on, seda selgitab see artikkel üksikasjalikult.
CSRF kontseptsioon
CSRF ristsaidilise päringu võltsimine (CSRF) on nagu XSS-rünnakudki äärmiselt kahjulikud, seda saab mõista nii: ründaja varastab sinu identiteedi ja saadab pahatahtliku päringu sinu nimele, mis on serveri jaoks täiesti seaduslik, kuid täidab tegevuse, mida ründaja ootab, näiteks saates e-kirju ja sõnumeid teie nimele, varastades teie konto, lisades süsteemiadministraatorid või ostes isegi kaupu, virtuaalsed valuutaülekanded jne. Veeb A on veebileht, millel on CSRF haavatavus, Veeb B on ründaja loodud pahatahtlik veebisait ja kasutaja C on Web A legitiimne kasutaja.
ASP.NET MVC CSRF rünnakute vastu
Vaatelehel kasuta @Html.AntiForgeryToken() sildi lisamiseks ning kui kasutaja lehele ligi pääseb, genereerib taustasüsteem automaatselt peidetud html-koodi sildiga järgmiselt:
<sisendi nimi="__RequestVerificationToken" tüüp="peidetud" value="CfDJ8FBn4LzSYglJpE6Q0fWvZ8WDMTgwK49lDU1XGuP5-5j4JlSCML_IDOO3XDL5EOyI_mS2Ux7lLSfI7ASQnIIxo2ScEJvnABf9v51TUZl_iM2S63zuiPK4lcXRPa_KUUDbK-LS4HD16pJusFRppj-dEGc" /> Taustakontroller tuleb seadistada [Valideeri AntiForgeryToken] funktsioon, mis takistab vormide võltsimist.
ValidateAntiForgeryToken ja AutoValidateAntiforgeryToken on erinevad
AutoValidateAntiforgeryTokenAuthorizationFilter pärib ValidateAntiforgeryTokenAuthorizationFilteri, kuid kirjutab sinna ainult ShouldValidate meetodi ümber.
AutoValidateAntiforgeryToken omadus, mis põhjustab võltsimisvastaste tokenite valideerimist kõigi ebaturvaliste HTTP meetodite puhul.HTTP-meetodid peale GET, HEAD, OPTIONS ja TRACE nõuavad kõik võltsimisvastast tokenit。 Seda saab rakendada globaalse filtrina, et käivitada rakenduse võltsimisvastane tokenite valideerimine vaikimisi.
Hüperlingi sisselogimine on nähtav.
AutoValidateAntiforgeryTokenAttribute valideerib kõne AutoValidateAntiforgeryTokenAuthorizationFilterile, mis pärib ValidateAntiforgeryTokenAuthorizationFilter,ShouldValide'i meetod on ümber kirjutatud, tõe tagastamine tähendab, et see tuleb valideerida, ja vale tagastamine ei saa valideerimist, nagu alloleval joonisel näidatud:
Analüüsi lähtekoodi:
AutoValidateAntiforgeryTokenAttribute võimaldab võltsimisvastast tokeni valideerimist rakendada globaalselt kõigile ebaturvalistele meetoditele, nagu POST, PUT, PATCH ja DELETE. Seega ei pea sa lisama [ValidateAntiForgeryToken] omadust igale tegevusele, mis seda nõuab.
Selle kasutamiseks lisa järgmine kood oma ConfigureServices'i Startup-klassi meetodile:
Kui pead võltsimisvastast autentimist ignoreerima, võid lisada [Ignoreeri AntiforgeryTokenomadus tegevusele.
Mõnikord võib juhtuda, et pead märgistama mitu päringut kontrolleril, samal ajal kui vajad mõningaid päringuid, mida pole vaja võltsida, näiteks erinevad GET-põhised operatsioonid. On mitmeid tööriistu, mida saate kasutada, et muuta protsess mugavamaks ja mugavamaks. Esimene neist on AutoValidateAntiforgeryToken omadus. See käitub nagu ValidateAntiForgeryToken vara. Kuid see ignoreerib automaatselt tegevusi, mida kutsuvad andmekogumiseks mõeldud meetodid: GET, HEAD, OPTIONS ja TRACE. See võimaldab kiiresti ja lihtsalt lisada võltsimisvastaseid meetodeid kõigile meetoditele, mis suudavad andmeid muuta ilma andmete hankimist mõjutamata.
Järgmine kood on näide AutoValidateAntiforgeryToken omadusest:
Selles näites töötavad mõlemad tavalised indeksoperatsioonid (GET) sõltumata allikast, samas kui nii POST meetodiga Index-operatsioon kui ka RemoveUser operatsioon Delete-meetodina nõuavad kliendilt võltsimisvastase tokeni kasutamist.
Kohanda asjakohast infot
Paljud inimesed võivad mõelda, kas genereeritud peidetud domeeni nimi saab asendada nende omaga ja kas küpsise nime saab muuta nende enda omaks.
Vastus on jah, näitame lühidalt:
Startup's ConfigureServices meetodis lisa järgmine, et muuta vaikimisi nime vastavalt.
Märkus: Suurim erinevus asp.net tuuma ja asp.net vahel on,Core toetab valideerimisparameetrite edastamist, taotledes päist, mitte vormide moodustamiseks!
private const string AntiforgeryTokenFieldName = "__RequestVerificationToken"; private const string AntiforgeryTokenHeaderName = "RequestVerificationToken";
Saate vaadata lähtekoodi:Hüperlingi sisselogimine on nähtav.
Testkood:
Tulemus: proovides pääseda test1 meetodile, tagastatakse 400 vea, test2 meetodi avamine tagastab meie läbitud str parameetri ja näed, et AutoValidateAntiforgeryToken funktsioon ei püüa GET-päringut kinni.
(Lõpp)
|
Eelmine:Fiddler asendab lingid, taotleb suunamisiJärgmine:[pööramine] SQL Server SQL Count
|