在項目安全中,都會涉及到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。


