日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

MVC防止CSRF攻击

發布時間:2025/3/21 c/c++ 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MVC防止CSRF攻击 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

首先就是先簡單介紹下什么是CSRF

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

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

[HttpPost][ValidateInput(false)][ValidateAntiForgeryToken]public ActionResult Login(string name,string pwd){if (name==pwd){return RedirectToAction("Index");}ModelState.AddModelError("", "用戶名密碼錯誤!");return View();}

 這時候我們構造一個請求,表單提交,就會拋出這樣的錯誤信息

?

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

這個玩意寫在我們的form標簽里,他的作用就是在form標簽里面加一個name為__RequestVerificationToken的hidden標簽,這個標簽的value就是一串被加密的字符串。

加密器是MachineKey。同時這玩意還生成了一個名為__RequestVerificationToken的cookie。

@using (Html.BeginForm("Login", "Home", FormMethod.Post)){ @Html.AntiForgeryToken()@Html.ValidationSummary(true)<div class="form-group"><label class="label-danger">用戶名:</label><input type="text" name="name" /></div><div class="form-group"><label class="label-danger">密碼:</label><input type="text" name="pwd" /></div><div class="form-group"><button type="submit" class="btn-primary">登陸</button></div>}

  

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

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

而我們在MVC中的應對之道就是別form表單里面使用? @Html.AntiForgeryToken()

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

在Controller里面,Action加上?[ValidateAntiForgeryToken]特性從而驗證。

流程就是如此。

?

轉載于:https://www.cnblogs.com/ZyCoder/p/9307374.html

總結

以上是生活随笔為你收集整理的MVC防止CSRF攻击的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。