ASP.NET Core 對XSS攻擊字符串的過濾--KYSharpCore.XSSFilter


在項目安全中,都會涉及到XSS攻擊,這里對xss攻擊內容進行了過濾方法的封裝,做了一個過濾器,方便在項目中使用。

這里的過濾是指將不合規的敏感字符相關內容直接刪除。 比如參數中帶有?text=<script>hello</script> world,過濾完,僅會將world傳遞到action中。

 

KYSharpCore.XSSFilter 定義的是一個過濾器,基於Netstand 2.0和MVC。

1、第一步,從包管理器引入組件KYSharpCore.XSSFilter  (僅限公司內部的包管理器),最新版本 1.1

 

 

 

 2、startup文件中完成過濾器的注入

      public void ConfigureServices(IServiceCollection services)
        {
           
            services.AddControllers(option=> {
                option.Filters.Add(new XSSFilter());
            });
          
        }

添加這個過濾器,就會對每個請求提交的所有字符串內容進行過濾處理。

XSSFilter 提供了2個構造函數,第一個如上面代碼,無參構造函數(常用)

另一個是帶參數的

  services.AddControllers(option=> {
                option.Filters.Add(new XSSFilter(new List<string>() { "/nlp/get2"},true));  //參數是url路徑的集合,必須小寫。表示這些地址的請求將忽略過濾;第二個參數,bool類型,true表示去除所有html,false表示僅按照默認方式過濾,保留允許的html代碼,默認是false
            });

 

 構造函數如下:

/// <summary>
        /// xss攻擊過濾器構造函數
        /// </summary>
        /// <param name="ignoreUrls">可以指定忽略的路徑,比如富文本內容保存頁面,統一小寫</param
        /// <param name="isNoHtml">是否允許html,若不允許,則去掉全部html</param>
        public XSSFilter(List<string> ignoreUrls,bool isNoHtml=false)
        {
            _ignoreUrls = ignoreUrls;
            _isNoHtml = isNoHtml;
        }

 

這樣,就簡單的完成了xss過濾的整個應用。

 

同時,對於應用中某個實體類對象若不需要檢測和替換,則可以配置AllowHtml屬性,表示允許html。

 

 

 

 


免責聲明!

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



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