Tool:Visual Studio 2015 Ultimate Update 3
OS:Windows 10
.NET Framework : 4.6.x
ASP.NET MVC 5.x
為了防止Cross-site request forgery (AKA XSRF or CSRF,相關說明可參考此篇文章) 在AS.PNET MVC程式中會使用Html.AntiForgeryToken( ) 方法來產生Anti-Forgery cookie:
@using ( Html.BeginForm( ) ) {
@Html.AntiForgeryToken( )
<input type="submit" />
}
預設Anti-Forgery cookie的名稱為 __RequestVerificationToken,我們從網頁攔截請求可以看到以下資訊:
為了安全性著想,你可以將其名稱修改,這樣比較不容易被猜出。
我們可以使用System.Web.Helpers命名空間下的AntiForgeryConfig類別將CookieName設為其它值,例如在Application_Start加上:
protected void Application_Start( ) {
AntiForgeryConfig.CookieName = "x";
AreaRegistration.RegisterAllAreas( );
RouteConfig.RegisterRoutes( RouteTable.Routes );
}
如此Cookie的名稱就指定為自訂的 x :
不過這個做法只能改CookieName,並不能修改表單中隱藏欄位的名稱 :
<input name="__RequestVerificationToken" type="hidden" value="....." />
若啟用SSL,我們可以設定RequireSsl為true,如此可以確保Anti-Forgery cookie會透過SSL傳送:
AntiForgeryConfig.RequireSsl = true;
沒有留言:
張貼留言