前言

前幾天,有個(gè)朋友問我關(guān)于AntiForgeryToken問題,由于對(duì)這一塊的理解也并不深入,所以就去研究了一番,梳理了一下。

在梳理之前,還需要簡(jiǎn)單了解一下背景知識(shí)。

AntiForgeryToken 可以說是處理/預(yù)防CSRF的一種處理方案。

那么什么是CSRF呢?

CSRF(Cross-site request forgery)是跨站請(qǐng)求偽造,也被稱為One Click Attack或者Session Riding,通常縮寫為CSRF或者XSRF,是一種對(duì)網(wǎng)站的惡意利用。

簡(jiǎn)單理解的話就是:有人盜用了你的身份,并且用你的名義發(fā)送惡意請(qǐng)求。

最近幾年,CSRF處于不溫不火的地位,但是還是要對(duì)這個(gè)小心防范!

更加詳細(xì)的內(nèi)容可以參考維基百科:Cross-site request forgery

下面從使用的角度來分析一下CSRF在 ASP.NET Core中的處理,個(gè)人認(rèn)為主要有下面兩大塊

  • 視圖層面

  • 控制器層面

視圖層面

用法

@Html.AntiForgeryToken()

在視圖層面的用法相對(duì)比較簡(jiǎn)單,用的還是HtmlHelper的那一套東西。在Form表單中加上這一句就可以了。

原理淺析

當(dāng)在表單中添加了上面的代碼后,頁面會(huì)生成一個(gè)隱藏域,隱藏域的值是一個(gè)生成的token(防偽標(biāo)識(shí)),類似下面的例子

<input name="__RequestVerificationToken" type="hidden" value="CfDJ8FBn4LzSYglJpE6Q0fWvZ8WDMTgwK49lDU1
        
		

網(wǎng)友評(píng)論