<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        .net core xss攻擊防御的方法

        來源:懂視網 責編:小采 時間:2020-11-27 22:34:56
        文檔

        .net core xss攻擊防御的方法

        .net core xss攻擊防御的方法:XSS攻擊全稱跨站腳本攻擊 ,是為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫為XSS,XSS是一種在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。 比如我們在表單提交的時候插入腳
        推薦度:
        導讀.net core xss攻擊防御的方法:XSS攻擊全稱跨站腳本攻擊 ,是為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫為XSS,XSS是一種在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。 比如我們在表單提交的時候插入腳

        XSS攻擊全稱跨站腳本攻擊 ,是為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫為XSS,XSS是一種在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。

        比如我們在表單提交的時候插入腳本代碼

        如果不進行處理,那么就是這種效果,我這里只是演示一個簡單的彈窗

        下面給大家分享一下我的解決方案。

        需要用到這個庫:HtmlSanitizer

        https://github.com/mganss/HtmlSanitizer

        新建一個過濾類。

         public class XSS
         {
         private HtmlSanitizer sanitizer;
         public XSS()
         {
         sanitizer = new HtmlSanitizer();
         //sanitizer.AllowedTags.Add("div");//標簽白名單
         sanitizer.AllowedAttributes.Add("class");//標簽屬性白名單,默認沒有class標簽屬性 
         //sanitizer.AllowedCssProperties.Add("font-family");//CSS屬性白名單
         }
        
         /// <summary>
         /// XSS過濾
         /// </summary>
         /// <param name="html">html代碼</param>
         /// <returns>過濾結果</returns>
         public string Filter(string html)
         {
         string str = sanitizer.Sanitize(html);
         return str;
         }
         }

        新建一個過濾器

         public class FieldFilterAttribute : Attribute,IActionFilter
         {
         private XSS xss;
         public FieldFilterAttribute()
         {
         xss = new XSS();
         }
        
         //在Action方法之回之后調用
         public void OnActionExecuted(ActionExecutedContext context)
         {
        
         }
        
         //在調用Action方法之前調用
         public void OnActionExecuting(ActionExecutingContext context)
         {
         //獲取Action參數集合
         var ps = context.ActionDescriptor.Parameters;
         //遍歷參數集合
         foreach (var p in ps)
         {
         if (context.ActionArguments[p.Name] != null)
         {
         //當參數等于字符串
         if (p.ParameterType.Equals(typeof(string)))
         {
         context.ActionArguments[p.Name] = xss.Filter(context.ActionArguments[p.Name].ToString());
         }
         else if (p.ParameterType.IsClass)//當參數等于類
         {
         ModelFieldFilter(p.Name, p.ParameterType, context.ActionArguments[p.Name]);
         }
         } 
        
         }
         }
        
         /// <summary>
         /// 遍歷修改類的字符串屬性
         /// </summary>
         /// <param name="key">類名</param>
         /// <param name="t">數據類型</param>
         /// <param name="obj">對象</param>
         /// <returns></returns>
         private object ModelFieldFilter(string key, Type t, object obj)
         {
         //獲取類的屬性集合
         var ats = t.GetCustomAttributes(typeof(FieldFilterAttribute), false);
        
        
         if (obj != null)
         {
         //獲取類的屬性集合
         var pps = t.GetProperties();
        
         foreach (var pp in pps)
         {
         if(pp.GetValue(obj) != null)
         {
         //當屬性等于字符串
         if (pp.PropertyType.Equals(typeof(string)))
         {
         string value = pp.GetValue(obj).ToString();
         pp.SetValue(obj, xss.Filter(value));
         }
         else if (pp.PropertyType.IsClass)//當屬性等于類進行遞歸
         {
         pp.SetValue(obj, ModelFieldFilter(pp.Name, pp.PropertyType, pp.GetValue(obj)));
         }
         }
         
         }
         }
        
         return obj;
         }
         }
         //屬性過濾器
         [FieldFilter]
         public class NoteBookController : ManageController
         {
         //筆記操作接口
         private INoteBookAppService _noteBookApp;
         public NoteBookController(INoteBookAppService noteBookApp)
         {
         this._noteBookApp = noteBookApp;
         }
         public IActionResult Tab()
         {
         return View();
         }
        
         }

        然后在需要過濾的控制器加上過濾控制器特性就可以了。這樣所有string類型的參數就都會進行過濾了。如果不需要對整個控制器進行過濾,只需要在相應的Action加上特性。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        .net core xss攻擊防御的方法

        .net core xss攻擊防御的方法:XSS攻擊全稱跨站腳本攻擊 ,是為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫為XSS,XSS是一種在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。 比如我們在表單提交的時候插入腳
        推薦度:
        標簽: net netcore core
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲第一成年免费网站| a级在线免费观看| 大学生美女毛片免费视频| 亚洲av第一网站久章草| 成人A级毛片免费观看AV网站| 国产精品亚洲一区二区麻豆| 亚洲第一成年免费网站| 亚洲av无码专区在线观看亚| 免费99热在线观看| 精品一区二区三区高清免费观看 | 亚洲熟妇成人精品一区| 美女视频黄a视频全免费| 亚洲狠狠成人综合网| 国产中文字幕免费| 国产精品免费久久久久久久久| 亚洲另类激情综合偷自拍图 | 日韩欧美一区二区三区免费观看| 亚洲国产韩国一区二区| 国语成本人片免费av无码| 亚洲av纯肉无码精品动漫| 亚洲区日韩区无码区| 在线免费播放一级毛片| 日本亚洲成高清一区二区三区 | 成人免费AA片在线观看| 亚洲国产精品网站在线播放| 免费人成视频x8x8入口| 国产偷伦视频免费观看| 亚洲神级电影国语版| 免费无码又爽又高潮视频| 有码人妻在线免费看片| 亚洲自偷自拍另类12p| 免费观看a级毛片| 国产人成网在线播放VA免费| 亚洲第一精品电影网| 日本免费的一级v一片| 中文字幕不卡免费视频| 在线综合亚洲欧洲综合网站| 亚洲日韩VA无码中文字幕| 最近2019免费中文字幕视频三| 久久精品国产亚洲AV| 亚洲一区中文字幕久久|