Čo je CSRF?
CSRF (Cross-site request forgery), známy aj ako útok jedným kliknutím/session riding, čínska skratka: CSRF/XSRF. CSRF (Cross Site Request Forgery) je metóda útoku na sieť, ktorá bola v roku 2007 zaradená medzi 20 najväčších bezpečnostných rizík na internete. Ďalšie bezpečnostné riziká, ako sú injekcie SQL skriptov a útoky na skripty cez doménu cez lokality, sa v posledných rokoch stali dobre známymi a mnohé webové stránky sa proti nim bránili. CSRF je však pre väčšinu ľudí stále cudzí pojem. Dokonca aj najznámejší Gmail mal na konci roku 2007 zraniteľnosť CSRF, ktorá bola hacknutá a spôsobila obrovské straty používateľom Gmailu.
Čo môže CSRF urobiť?
CSRF útoky môžete pochopiť takto: útočník ukradol vašu identitu a poslal škodlivé požiadavky vo vašom mene. CSRF dokáže napríklad posielať e-maily, správy, kradnúť vám účet alebo dokonca nakupovať tovar a prevádzať virtuálnu menu vo vašom mene...... Medzi spôsobené problémy patria: únik osobného súkromia a bezpečnosť majetku.
ASP.NET MVC AntiCounterfeityToken protifalšovateľská značka
V ASP.NET MVC sa tokeny formulárov a tokenov cookies automaticky generujú automaticky vždy, keď sa @Html.AntiForgeryToken() použije na stránke zobrazenia. Ak však chceme dosiahnuť manuálne vyhľadávanie na pozadí, musíme použiť triedu System.Web.Helpers.AntiForgery a priatelia, ktorí majú záujem pozrieť si zdrojový kód, zistia, že v skutočnosti je interný spôsob volania @Html.AntiForgeryToken() rovnaký ako v triede AntiForgery.
Používa sa hlavne na získanie zodpovedajúceho formulára a tokenu cookie pomocou dvoch statických metód: AntiForgery.GetHtml() alebo AntiForgery.GetTokens(string oldCookieToken, out string newCookieToken, out string formToken). Treba však poznamenať, že po zavolaní metódy GetHTML sa automaticky vygeneruje príslušný token cookie a potom sa priamo vráti časť HTML kódu s poľom skrytej hodnoty tokenu formulára, pričom vrátená hodnota bude v tomto tvare:
<input name="__RequestVerificationToken" type="hidden" value="8_nUk_3z0svQr9qcvRBi9SWMZ2-SYmuy9kRe9OgRobGULkb2Z4JZxRZFhR0ndeoy9hmDLDru7MFk-W4xrnL5z5T6VbkfXK7fyRk-egQBGm41"> Názov skrytého poľa je zvyčajne fixovaný na "__RequestVerificationToken" a hodnota je šifrovaný bezpečnostný token. Toto skryté pole sa zvyčajne umiestni do formulára na odoslanie a finálny príspevok sa overuje pomocou cookie tokenu.
Ak použijete metódu GetTokens, môžete získať šifrovaný formulár a cookie token po zadaní príslušných parametrov, ale tu musíte príslušné hodnoty uložiť sami.
Ďalej predstavíme metódu manuálnej aktualizácie AntiForgeryToken, najmä cez AJAX.
Kód balíka:
Testovací kód:
Zistili sme, že pri odoslaní ajax požiadavky sa __RequestVerificationToken parametre automaticky pripočítajú, ako je znázornené na obrázku nižšie:
|