asp.net mvc 安全測試漏洞 "跨站點請求偽造" 問題解決


IBM Security Appscan漏洞篩查-跨站請求偽造,該漏洞的產生,有多種情況:

1.WebApi的跨站請求偽造,需要對WebApi的請求頭部做限制(此文不做詳細介紹);

2.MVC Action Post接口的跨站請求偽造,具體解決方案,請查看mvc 當中 [ValidateAntiForgeryToken] 的作用

3. MVC Action Get接口,例如: 跳轉頁面,數據查詢等接口,使用驗證HTTP Referer字段 防止跨站請求偽造攻擊。

具體實現思路

定義RefererAttribute繼承自ActionFilterAttribute,在Action執行之前,進行攔截;

  1. /// <summary>
  2. /// Referer(安全)攔截組件
  3. /// </summary>
  4. public class RefererAttribute : ActionFilterAttribute
  5. {
  6.     private ExcuteMode _customMode;
  7.     /// <summary>默認構造</summary>
  8.     public RefererAttribute(ExcuteMode Mode)
  9.     {
  10.         _customMode = Mode;
  11.     }
  12.  
  13.     /// <summary>
  14.     /// 安全認證
  15.     /// </summary>
  16.     /// <param name="filterContext"></param>
  17.     public override void OnActionExecuting(ActionExecutingContext filterContext)
  18.     {
  19.         //是否忽略
  20.         if (_customMode == ExcuteMode.Ignore)
  21.         {
  22.             return;
  23.         }
  24.         var request = filterContext.HttpContext.Request;
  25.  
  26.         if (request.Headers.Get("Referer").IndexOf(Config.GetValue("WebUrl")) > -1
  27.             || request.Headers.Get("Referer").IndexOf(Config.GetValue("NwWebUrl")) > -1
  28.             )
  29.         {
  30.             return;
  31.         }
  32.         else
  33.         {
  34.             throw new Exception("跨域防偽攻擊:" + request.Headers.Get("Referer"));
  35.         }
  36.     }
  37. }

在Controller層增加特性,則所有Action在執行之前都會進行攔截。

參考:

IBM Security Appscan漏洞--跨站點請求偽造


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM