2016年10月14日 星期五

變更Anti-Forgery cookie名稱

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,我們從網頁攔截請求可以看到以下資訊:

image

為了安全性著想,你可以將其名稱修改,這樣比較不容易被猜出。

我們可以使用System.Web.Helpers命名空間下的AntiForgeryConfig類別將CookieName設為其它值,例如在Application_Start加上:

protected void Application_Start( ) {
  AntiForgeryConfig.CookieName = "x";
  AreaRegistration.RegisterAllAreas( );
  RouteConfig.RegisterRoutes( RouteTable.Routes );
}

如此Cookie的名稱就指定為自訂的 x :

image

不過這個做法只能改CookieName,並不能修改表單中隱藏欄位的名稱 :

<input name="__RequestVerificationToken" type="hidden" value="....." />

若啟用SSL,我們可以設定RequireSsl為true,如此可以確保Anti-Forgery cookie會透過SSL傳送:

AntiForgeryConfig.RequireSsl = true;

沒有留言:

總網頁瀏覽量