怎么在。net中防御核心和xss攻击

  介绍

今天就跟大家聊聊有关怎么在。net中防御核心和xss攻击,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

xss攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为xss, xss是一种web应在用中的计算机安全漏洞,它允许恶意网络用户将代码植入到提供给其它用户使用的页面中。

比如我们在表单提交的时候插入脚本代码

怎么在。net中防御核心和xss攻击

如果不进行处理,那么就是这种效果,我这里只是演示一个简单的弹窗

怎么在。net中防御核心和xss攻击

下面给大家分享一下我的解决方案。

需要用到这个库:HtmlSanitizer https://github.com/mganss/HtmlSanitizer

新建一个过滤类。

, public  class  xss   {才能   ,,,private  HtmlSanitizer 洗手液;   ,,,public  XSS ()   ,,,{   ,,,,,sanitizer =, new  HtmlSanitizer ();   ,,,,,//sanitizer.AllowedTags.Add (“div");//标签白名单   ,,,,,sanitizer.AllowedAttributes.Add (“class");//标签属性白名单,默认没有类标签属性,,,,,,   ,,,,,//sanitizer.AllowedCssProperties.Add (“font-family");//CSS属性白名单   ,,,}      ,,,///,& lt; summary>   ,,,///,XSS过滤   ,,,///,& lt;/summary>   ,,,///,& lt; param  name=癶tml"在html代码& lt;/param>   ,,,///,& lt; returns>过滤结果& lt;/returns>   ,,,public  string 过滤器(string  html)   ,,,{   ,,,,,string  str =, sanitizer.Sanitize (html);   ,,,,,return  str;   ,,,}   以前,,}

新建一个过滤器

, public  class  FieldFilterAttribute :属性,IActionFilter   {才能   ,,,private  XSS  xss;   ,,,public  FieldFilterAttribute ()   ,,,{   ,,,,,xss =, new  XSS ();   ,,,}      ,,,//在行动方法之回之后调用   ,,,public  void  OnActionExecuted (ActionExecutedContext 上下文)   ,,,{      ,,,}      ,,,//在调用行动方法之前调用   ,,,public  void  OnActionExecuting (ActionExecutingContext 上下文)   ,,,{   ,,,,,//获取行动参数集合   ,,,,,var  ps =, context.ActionDescriptor.Parameters;   ,,,,,//遍历参数集合   ,,,,,foreach  (var  p  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]);   ,,,,,,,,,}   ,,,,,,,},,,,,,,,,,      ,,,,,}   ,,,}      ,,,///,& lt; summary>   ,,,///,遍历修改类的字符串属性   ,,,///,& lt;/summary>   ,,,///,& lt; param  name=発ey"在类名& lt;/param>   ,,,///,& lt; param  name=皌"在数据类型& lt;/param>   ,,,///,& lt; param  name=皁bj"在对象& lt;/param>   ,,,///,& lt; returns> & lt;/returns>   ,,,private  object  ModelFieldFilter (string 关键,Type  t, object  obj)   ,,,{   ,,,,,//获取类的属性集合   ,,,,,var  ats =, t.GetCustomAttributes (typeof (FieldFilterAttribute),假);         ,,,,,if  (obj  !=, null)   ,,,,,{   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在。net中防御核心和xss攻击