MVC防止CSRF攻擊

2022-03-02 23:59:48 字數 1375 閱讀 2223

可能我們大多數人做web的時候不會太注意這個問題,但是這是乙個很重要的乙個點。我們寫**寫業務的時候也應該從各方面多思考。

首先就是先簡單介紹下什麼是csrf

csrf 全程是 cross-site request forgery 中文意思就是跨站請求偽造。和跨站指令碼xss不同,xss的特點是利用站內受信任的使用者,將**植入到提供給其它使用者使用的頁面中,但是csrf的特點是利用你的身份去做一些服務端認為合法的請求。可能我們很多人都會出現qq空間被莫名的發好多廣告資訊,他的流程就是 比如說我們登陸了乙個** ,一些認證資訊儲存再cookie中,因為session也就是根據cookie的機制來實現的,當別人拿到這些cookie的時候 就可以利用cookie來做服務端認為合法的事情,發廣告帖什麼的。

防範方式也有很多 在mvc中可以通過validateantiforgerytoken這個特性來做到這一點。同時 這個特性只針對post請求,這個特性的作用就是阻止偽造請求。**如下:

modelstate.addmodelerror("", "使用者名稱密碼錯誤!");

return view();

}這時候我們構造乙個請求,表單提交,就會丟擲這樣的錯誤資訊

其實到這一步我們的初步目標就達到了,在本站點中,我們在提交表單的時候,需要使用到html.antiforgerytoken()

這個玩意寫在我們的form標籤裡,他的作用就是在form標籤裡面加乙個name為__requestverificationtoken的hidden標籤,這個標籤的value就是一串被加密的字串。

加密器是machinekey。同時這玩意還生成了乙個名為__requestverificationtoken的cookie。

@using (html.beginform("login", "home", formmethod.post))

這時候我們就可以構造合法且相對安全的請求了。

總結一下 csrf 就是別人利用你的身份進行惡意操作。

而我們在mvc中的應對之道就是別form表單裡面使用  @html.antiforgerytoken()

這玩意的作用就是通過machinekey加密從而生成了乙個hidden標籤以及寫入cookie

在controller裡面,action加上 [validateantiforgerytoken]特性從而驗證。

流程就是如此。

防止CSRF攻擊

2.新增校驗token。前端發出請求時,加入從後端返回的token欄位的值 不能儲存在cookie中 攻擊者無法偽造的值 如果token不正確,不通過請求。3.設定 cookie 的samesite屬性 lax 相對嚴格模式,大多數情況下不傳送 cookie,導航到目標 的 get 請求除外。請求型...

防止CSRF跨域攻擊

csrf主要是指有些人使用自動表單提交不停的請求你的 或者使用非法請求連線訪問站點,防止這些攻擊也比較容易就是在自己 做乙個token驗證基本就防止了非法請求,正常清楚我們生成的唯一token進行行為驗證,如果token通過則執行操作,否則就不通過,防止了無限請求刷自己 的情況。首先生成token存...

Token防止表單重複提交和CSRF攻擊

兩者在原理上都是通過session token來實現的。當客戶端請求頁面時,伺服器會生成乙個隨機數token,並且將token放置到session當中,然後將token發給客戶端 一般通過構造hidden表單 下次客戶端提交請求時,token會隨著表單一起提交到伺服器端。伺服器端會對token值進行...