首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET Web API 安全性啟用與自定義:CSRF 防護、Token 驗證與跨平台授權

     編輯:關於ASP.NET

前言

當 JavaScript 從同源頁面呼叫 Web API 時,ASP.NET 表單驗證的 Cookie 會自動隨請求發送,基礎安全已具備。但需特別防範 CSRF(跨站請求偽造)攻擊,並支援非瀏覽器客戶端與擴展授權邏輯。

CSRF 防護機制

ASP.NET 提供 AntiForgery 類別產生雙 Token(Cookie Token + Form Token),嵌入頁面並在 AJAX 請求標頭帶回驗證。

伺服器端產生 Token

[Authorize(Roles="manager")]
public ActionResult Index() {
  string cookieToken, formToken;
  AntiForgery.GetTokens(null, out cookieToken, out formToken);
  ViewBag.cookieToken = cookieToken;
  ViewBag.formToken = formToken;
  return View("Index");
}

前端 AJAX 攜帶 Token

// 方式一:直接寫入標頭
$.ajax("https://phvis.com/api/Customers", {
  type: "get",
  contentType: "application/json",
  headers: {
    'formToken': '@ViewBag.formToken',
    'cookieToken': '@ViewBag.cookieToken'
  }
});

// 方式二:隱藏欄位儲存,JS 讀取後帶入
@Html.Hidden("formToken")
@Html.Hidden("cookieToken")

$.ajax("https://localhost:49226/api/Customers", {
  type: "get",
  contentType: "application/json",
  headers: {
    'formToken': $("#formToken").val(),
    'cookieToken': $("#cookieToken").val()
  }
});

Web Forms 環境下註冊腳本

string code = "function CallService(){ $.ajax('https://phvis.com/api/Customers',{ type:'get', contentType:'application/json', headers:{'formToken':'"+formToken+"','cookieToken':'"+cookieToken+"'}}); }";
this.ClientScript.RegisterClientScriptBlock(typeof(Page), "loadCustid", code, true);

其他安全性考量

  • SSL 傳輸加密:由主機層面強制開啟,確保通訊機密性
  • 非瀏覽器客戶端:需實作 Token 認證(如 API Key、JWT、OAuth)替代 Cookie
  • 擴展授權邏輯:自訂 AuthorizeAttribute,依據聲明、角色、資源擁有權等條件授權

結語

Web API 安全性建立在 ASP.NET 管線之上,善用內建防偽機制並配合 HTTPS、Token 認證,可構建完整的 API 保護體系。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved