1. 程式人生 > >Asp.net MVC 如何防止CSRF攻擊

Asp.net MVC 如何防止CSRF攻擊

什麼是CSRF攻擊?

CSRF(Cross-site request forgery跨站請求偽造,也被稱成為“one click attack”或者session riding,通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。儘管聽起來像跨站指令碼(XSS),但它與XSS非常不同,並且攻擊方式幾乎相左。XSS利用站點內的信任使用者,而CSRF則通過偽裝來自受信任使用者的請求來利用受信任的網站。與XSS攻擊相比,CSRF攻擊往往不大流行(因此對其進行防範的資源也相當稀少)和難以防範,所以被認為比XSS更具危險性。

CSRF攻擊發生的場景:

       CSRF攻擊依賴下面的假定:

  攻擊者瞭解受害者所在的站點

  攻擊者的目標站點具有持久化授權cookie或者受害者具有當前會話cookie

  目標站點沒有對使用者在網站行為的第二授權

Asp.net MVC 內建了對CSRF進行防禦的方法如下:

1.在View的Form表間中使用

<%=Html.AntiForgeryToken() %>

例如:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 <% using (Html.BeginForm(
"Login", "Admin", FormMethod.Post)) { %> <%=Html.AntiForgeryToken() %> <%= Html.ValidationSummary(true, "登入不成功。請更正錯誤並重試。") %> <div> <fieldset> <legend>帳戶資訊</legend>            <div class="editor-label"> <%= Html.LabelFor(m => m.UserName) %>
</div> <div class="editor-field"> <%= Html.TextBoxFor(m => m.UserName)%> <%= Html.ValidationMessageFor(m => m.UserName)%> <label id="UserNameTip"></label> </div> <div class="editor-label"> <%= Html.LabelFor(m => m.Password) %> </div> <div class="editor-field"> <%= Html.PasswordFor(m => m.Password) %> <%= Html.ValidationMessageFor(m => m.Password) %> </div> <p> <input type="submit" value="登入" /> </p> </fieldset> </div> <% } %>

2.d在對應的Action中用[ValidateAntiForgeryToken]進行標識:如下

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [HttpPost] [ValidateAntiForgeryToken] public ActionResult Login(Usr usr) { if (ModelState.IsValid) { var model = DB.Context.Single<Usr>(p => p.SystemUser == true && p.UserName == usr.UserName && p.Password == usr.Password); if (model != null) { authenticate.Login(usr.UserName, usr.Role); return RedirectToAction("UserList", "Admin"); } else { ModelState.AddModelError("", "提供的使用者名稱或密碼不正確。"); } } return View(usr); }

其實我們發現Asp.net MVC 幫我們做了很多。

相關推薦

ASP.NET MVC 防止 CSRF 的方法

MVC中的Html.AntiForgeryToken()是用來防止跨站請求偽造(CSRF:Cross-site request forgery)攻擊的一個措施,它跟XSS(XSS又叫CSS:Cross-Site-Script),攻擊不同,XSS一般是利用站內信任的使用者在網站內插入惡意的指令碼程式碼進行攻擊,

ASP.NET MVCCSRF(跨站腳本)攻擊

轉移 off end gis 帳戶 blank 表單 密碼 message CSRF 一 何為CSRF CSRF(Cross-site request forgery跨站請求偽造,也被稱成為“one click attack”或者session riding,通常縮寫為CS

MVC防止CSRF攻擊

防範 bmi date tex 阻止 出現 人做 簡單 image 可能我們大多數人做web的時候不會太註意這個問題,但是這是一個很重要的一個點。我們寫代碼寫業務的時候也應該從各方面多思考。 首先就是先簡單介紹下什麽是CSRF CSRF 全程是 Cross-site r

ASP.NET MVC防範CSRF最佳實踐

XSS與CSRF 哈哈,有點標題黨,但我保證這篇文章跟別的不太一樣。 我認為,網站安全的基礎有三塊: 防範中間人攻擊 防範XSS 防範CSRF 注意,我講的是基礎,如果更高階點的話可以考慮防範機器人刷單,再高階點就防範DDoS攻擊,不過我們還是回到“基礎”這個話題上吧,對於中間人攻擊,使用

Asp.net MVC 如何防止CSRF攻擊

什麼是CSRF攻擊? CSRF(Cross-site request forgery跨站請求偽造,也被稱成為“one click attack”或者session riding,通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。儘管聽起來像跨站指令碼(XSS),但

JWT+ASP.NET MVC 時間戳防止重放攻擊

font 例子 memory provider ide 進入 div get encode 時間戳作用 客戶端在向服務端接口進行請求,如果請求信息進行了加密處理,被第三方截取到請求包,可以使用該請求包進行重復請求操作。如果服務端不進行防重放攻擊,就會服務器壓

ASP.NET Core 防止跨站請求偽造(XSRF/CSRF攻擊

什麼是反偽造攻擊? 跨站點請求偽造(也稱為XSRF或CSRF,發音為see-surf)是對Web託管應用程式的攻擊,因為惡意網站可能會影響客戶端瀏覽器和瀏覽器信任網站之間的互動。這種攻擊是完全有可能的,因為Web瀏覽器會自動在每一個請求中傳送某些身份驗證令牌到請求網站。這種攻擊形式也被稱為 一鍵式攻擊 或 會

什麼是CSRF攻擊,如何在ASP.NET MVC網站中阻止這種攻擊

1   什麼是CSRF,如何防治? Cross-site request forgery 1.1 例子 假如一家銀行用以執行轉賬操作的URL地址如下: http://www.examplebank.com/withdraw?account=AccoutName&

AOP實踐--ASP.NET MVC 5使用Filter過濾Action引數防止sql注入,讓你程式碼安全簡潔

在開發程式的過程中,稍微不注意就會隱含有sql注入的危險。今天我就來說下,ASP.NET mvc 5使用Filter過濾Action引數防止sql注入,讓你程式碼安全簡潔。不用每下地方對引數的值都進行檢查,看是使用者輸入的內容是否有危險的sql。如果沒個地方都要加有幾個缺

Spring MVC防止csrf攻擊的攔截器示例

package com.hikvision.cms.pms.base; import java.util.HashSet; import java.util.Set; import javax.servlet.http.HttpServletRequest;

IOC Of Ninject Base On ASP.NET MVC

dex 準備工作 應用 new 引用 cti err art part 說在之前的話 IOC的概念相信大家比較熟悉了,習慣性稱之為依賴註入或控制反轉,園子裏對基於MVC平臺IOC設計模式已經相當多了,但大家都只知道應該怎麽應用一個IOC模式,比如Ninject, Unity

ASP.Net MVC連接MySQL和Code First的使用

config文件 onf tsql .com mysql字符串 spa set web 不同 首先要準備一下的工具作為環境 MySQL Community Server 5.7.x My Workbench 6.3 VS2017 新建一個項目,NetMySQLCodeF

ASP.NET MVC 替換默認的基架模板

不想 esp black 函數返回 als work 相同 bae detail 在學習Asp.net Mvc中,今天第一次聽了基架,哈哈! 常用的首字母縮略詞 CRUD 恰當地傳達了根據數據存儲編寫例程創建、檢索、更新和刪除操作的普通任務。Microsoft 提供由

asp.net mvc 註冊中的郵箱激活功能實現

名稱 work 點擊 rom urn 內容 string 電子郵件 amp 基本流程圖 註冊頁面就不再寫出,現在將發送郵件的代碼粘貼出來 public ActionResult SendEmial() { int

ASP.NET MVC 5 Controllers and Actions

del png asp.net obj into sse ascx stat wan Creating a Controller with IController All controller classes must implemet IController interf

Asp.net MVC中如何獲取控制器的名稱

tex 如何 route 控制 this .get data control str 如果在代碼中 當前controller、action的獲取RouteData.Route.GetRouteData(this.HttpContext).Values["controlle

ASP.NET MVC 提高運行速度的幾種性能優化方法

服務 排隊 等待 谷歌搜索 部署 lan str run 提高 主要介紹ASP.NETMVC 應用提速的六種方法,因為沒有人喜歡等待,所以介紹幾種常用的優化方法。 大家可能會遇到排隊等待,遇到紅燈要等待,開個網頁要等待,等等等。 理所當然,沒有人喜歡等待網頁慢吞吞地加載

asp.net mvc中html helper的一大優勢

ont size color 優勢 其中 系統 per .net strong 剛上手這個框架,發現其中的html helper用起來很方便,讓我們這些從web form 過渡來的coder有一種使用控件的快感,嘻嘻! 言歸正傳,我要說的是在使用它時,系統會自動執行表單的現

asp.net mvc cookie超時返回登錄頁面問題

vid sig ror ttr resp 執行 bsp filter current filterContext.HttpContext.Response.Write("<script>top.location.href = ‘/Login/Index‘;<

淺析Asp.net MVC 中Ajax的使用

x11 生成 table ex18 review arp javascrip tle func 在ASP.NET MVC beta中我們可以使用Ajax.BeginForm, Ajax.ActionLink來進行Ajax調用,同樣我們也可以使用一些支持Ajax 框架如jQ