ASP.NET MVC 防範CSRF 攻擊 | ajax csrf token
在ASP.NETMVC裡要防範CSRF攻擊可以在檢視頁面上加入使用AntiFrogeryToken,並且在後端所對應的Action方法加上ValidateAntiForgeryTokenAttribute,這樣就可以防止CSRF的攻擊,相關的資訊我之前有寫過依篇文章來說明「ASP.NETMVC-ValidateAntiForgeryToken與自定HandleError處理顯示客製的錯誤訊息頁[1]」。但如果網站的前端與後端互動大多都是經由AJAX方式的話,似乎就無法加上AntiForgeryToken來防護CSRF的攻擊,有些朋友是認為因為Javascript操作是不能跨網域的,所以就不用刻意對AJAX的操作加入AntiForgeryToken防範CSRF,但我則是...
在 ASP.NET MVC 裡要防範 CSRF 攻擊可以在檢視頁面上加入使用 AntiFrogeryToken,並且在後端所對應的 Action 方法加上 ValidateAntiForgeryToken Attribute,這樣就可以防止 CSRF 的攻擊,相關的資訊我之前有寫過依篇文章來說明「ASP.NET MVC - ValidateAntiForgeryToken 與 自定 HandleError 處理顯示客製的錯誤訊息頁[1]」。
但如果網站的前端與後端互動大多都是經由 AJAX 方式的話,似乎就無法加上 AntiForgeryToken 來防護 CSRF 的攻擊,有些朋友是認為因為 Javascript 操作是不能跨網域的,所以就不用刻意對 AJAX 的操作加入 AntiForgeryToken 防範 CSRF,但我則是認為還是有必要去做這一層的防範,外在的攻擊手法是我們無法可以預測的,我們對於網站還是有必要去做到一些根本的防護,至少是多一層保障。
而這一篇則是跟大家說明如何在 AJAX 的操作裡使用 AntiForgeryToken。
在「Preventing Cross-Site Request Forgery (CSRF) Attacks : The Official Microsoft ASP.NET Site[2]」這一篇文章裡有提到了「Anti-CSRF and AJAX」,作者「Mike Wasson[3]」示範了如何在檢視頁面裡去建立一個 Razor @functions 「TokenHeaderValue」,然後在頁面裡使用 jQuery.Ajax 操作時在 headers 去加入 RequestVerificationToken 的內容,然後當 Request 傳送到後端 Controller Action 方法時再去驗證前端所傳送的 Token 是否正確,但是該文章最後所提供的方法並沒有完整的說明該用在何處,而且如果直接在 Controller Action 方法裡調用的話,還需要做調整,而且如果能夠跟原來使用 ValidateAntiForgeryToken Attribute 方式一樣的話會比較好,直接在 Action 方法上加個 Attribute 標籤而不...