介绍
今天就跟大家聊聊有关怎么在。net中防御核心和xss攻击,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
xss攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为xss, xss是一种web应在用中的计算机安全漏洞,它允许恶意网络用户将代码植入到提供给其它用户使用的页面中。
比如我们在表单提交的时候插入脚本代码
如果不进行处理,那么就是这种效果,我这里只是演示一个简单的弹窗
下面给大家分享一下我的解决方案。
需要用到这个库: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攻击