【愚公系列】2023年03月 .NET CORE工具案例-基于AntiXssUF的跨脚本XSS中间件
文章目录
- 前言
- 一、AntiXssUF的跨脚本XSS中间件
- 1.安装包
- 2.添加依赖注入
- 3.使用方式
- 3.1 构造函数使用
- 3.2 模型绑定器使用
- 3.3 直接使用
前言
XSS是一种跨站脚本攻击,攻击者通过在网页中注入恶意脚本,从而获取用户的敏感信息或者控制用户的浏览器。
XSS 的应用场景和案例包括但不限于:窃取用户的 Cookie、密码等敏感信息,篡改网页内容,进行钓鱼攻击,控制用户浏览器等。其中,最常见的 XSS 攻击是通过在网站中注入恶意脚本,使得用户在访问该网站时执行该脚本,从而达到攻击的目的。
AntiXssUF(XSS)过滤器,以白名单的过滤策略,支持多种过滤策略,可以根据业务场景选择适合的过滤策略,或者根据用户角色动态绑定过滤策略,支持OwaspAntisamy项目的配置,支持json格式的配置。
AntiXssUF源码网址:https://gitee.com/ufangx/AntiXssUF
一、AntiXssUF的跨脚本XSS中间件
1.安装包
AntiXssUF
2.添加依赖注入
#region XSS过滤器
string ContentRootPath = builder.Environment.ContentRootPath;
//添加策略和设置默认策略
builder.Services.AddXssFilter(opt => opt.DefaultSchemeName = "DefaultPolicy").AddScheme<AntisamyPolicy>("antisamy", () => File.ReadAllTextAsync(Path.Combine(ContentRootPath, "resources/antisamy.xml"))).AddScheme<AntisamyPolicy>("anythinggoes", () => File.ReadAllTextAsync(Path.Combine(ContentRootPath, "resources/antisamy-anythinggoes.xml"))).AddScheme<AntisamyPolicy>("ebay", () => File.ReadAllTextAsync(Path.Combine(ContentRootPath, "resources/antisamy-ebay.xml"))).AddScheme<AntisamyPolicy>("myspace", () => File.ReadAllTextAsync(Path.Combine(ContentRootPath, "resources/antisamy-myspace.xml"))).AddScheme<AntisamyPolicy>("slashdot", () => File.ReadAllTextAsync(Path.Combine(ContentRootPath, "resources/antisamy-slashdot.xml"))).AddScheme<AntisamyPolicy>("test", () => File.ReadAllTextAsync(Path.Combine(ContentRootPath, "resources/antisamy-test.xml"))).AddScheme<JsonFilterPolicy>("DefaultPolicy", () => File.ReadAllTextAsync(Path.Combine(ContentRootPath, "resources/DefaultPolicy.json")));
;
//添加模型绑定器
builder.Services.AddControllers(options =>
{options.ModelBinderProviders.Insert(0, new RichTextBinderProvider());
});
#endregion
3.使用方式
3.1 构造函数使用
[ApiController]
[Route("[controller]")]
public class HomeController : ControllerBase
{private readonly IFilterPolicyFactory policyFactory;//依赖注入public HomeController(IFilterPolicyFactory policyFactory){this.policyFactory = policyFactory;}[HttpGet(Name = "Test")]public async Task<IActionResult> Test(string source){var policyName = "ebay";//策略名称var filter = await policyFactory.CreateHtmlFilter(policyName);//创建过滤器var clean = filter.Filters(source);//过滤危险代码return Content(clean);}
}
3.2 模型绑定器使用
public class TestModel
{public string Name { get; set; }[XssSchemeName("ebay")]public RichText RichText { get; set; }
}
使用
public IActionResult Test(TestModel model){string clean = model?.RichText;//这里自动过滤危险代码return Content(clean??string.Empty);}//使用参数绑定过滤策略public IActionResult Test([XssSchemeName("ebay")] RichText richText){string clean = richText;//这里自动过滤危险代码return Content(clean??string.Empty);}
3.3 直接使用
1、使用内置的默认策略
//使用参数绑定过滤策略,这里需要添加模型绑定器
public IActionResult Test(RichText richText)
{string clean = richText;//这里自动过滤危险代码return Content(clean??string.Empty);
}
//这里不需要添加模型绑定器
public IActionResult Test(string source)
{RichText richText=source;string clean = richText;//这里自动过滤危险代码return Content(clean??string.Empty);
}
2、指定策略
public IActionResult Test(string source)
{var policy = new AntisamyPolicy();//json格式用JsonFilterPolicy类policy.Init(File.ReadAllText("c:/www/resources/antisamy-ebay.xml"),"ebay");var filter=new HtmlFilter(policy);var clean = filter.Filters(source);//过滤危险代码return Content(clean??string.Empty);
}
【愚公系列】2023年03月 .NET CORE工具案例-基于AntiXssUF的跨脚本XSS中间件相关推荐
- 【愚公系列】2023年01月 .NET CORE工具案例-基于SqlSugar的多库多表融合查询
文章目录 前言 一.基于SqlSugar的多库多表融合查询 1.安装包 2.订单表 3.添加连接 3.1 初始化添加 3.2 动态添加 4.查询 4.1 子表对主表(一对一)查询 4.2 主表对子表( ...
- 【愚公系列】2023年02月 .NET CORE工具案例-Lunar日历转换
文章目录 前言 一.Lunar日历转换 1.安装包 2.相关代码 3.运行 二.用途 1.年历 2.月历 3.佛历 4.道历 5.上班摸鱼 前言 真正的日历产生,大约在一千一百多年前的唐顺宗永贞元年, ...
- 【愚公系列】2023年01月 .NET CORE工具案例-CS-Script脚本执行引擎
文章目录 前言 一.CS-Script脚本执行引擎 1.安装包 2.具体使用 2.1 CompileMethod 2.2 LoadMethod 2.3 LoadCode 2.4 CompileCode ...
- 【愚公系列】2023年02月 .NET CORE工具案例-Caliburn.Micro的使用基于WPF的改造的MVVM案例
文章目录 前言 1.Caliburn.Micro是什么 2.Caliburn.Micro的主要功能 一.Caliburn.Micro的使用基于WPF的改造 1.项目介绍 2.安装软件包 3.改造App ...
- 【愚公系列】2023年01月 .NET CORE工具案例- Magick.NET神级图片和视频操作库
文章目录 前言 一.Magick.NET的使用 1.安装包 2.图像的操作 2.1 图像读取 2.1 图像大小改变 2.2 图像格式转换 2.3 PDF转换 2.4 添加水印.文本 2.5 图片合并 ...
- 【愚公系列】2023年04月 .NET CORE工具案例-二维码生成器QRCoder
文章目录 前言 一.二维码生成器QRCoder 1.QRCoder是什么 2.安装包 3.普通二维码 3.1 创建二维码 3.2 设置二维码颜色 3.3 带logo的二维码 4.艺术二维码 4.1 创 ...
- 【愚公系列】2023年02月 .NET CORE工具案例-办公文档神器Toxy的使用
文章目录 前言 一.办公文档神器Toxy的使用 1.安装对应的包 2.Word文档操作 2.1 普通文档解析 2.2 表格文档解析 3.Excel文件操作 4.PDF文档操作 5.图片文件操作 总结 ...
- 【愚公系列】2022年11月 .NET CORE工具案例-.NET 7中的WebTransport通信
文章目录 前言 1.技术背景 2.QUIC相关概念 3.HTTP/3.0 一.WebTransport 1.WebTransport概念 2.WebTransport在js中的使用 3.WebTran ...
- 【愚公系列】2022年12月 .NET CORE工具案例-多语言离线翻译系统
文章目录 前言 1.在线翻译 2.离线翻译 一.多语言离线翻译系统 1.开发环境 2.准备离线翻译包 3.准备python代码 4.调试翻译结果 5.Python翻译服务对接到.NET Core 前言 ...
最新文章
- git 查看公共commit_git使用点滴:如何查看commit的内容
- GRE OVER IPSEC
- 分类模型的评估方法-正确率(Accuracy)
- Windows Mobile的高效贴图
- SaaS产品设计,从0到1案例实操
- 根据xml生成相应的对象类
- OpenCV之cvSmooth函数平滑滤波
- w ndows7端口在哪里,win7电脑遇到端口被占用的情况该如何查看并将其关闭
- VScode 搭建 django 开发环境(Win Python3.71 django1.11.11)
- vue.js 父子组件间 props 数据同步处理
- 晶振PCB layout注意事项
- 百度搜索移动端流量词热度统计方法
- JavaScript基础--DOM部分02--李南江
- 史上最全自媒体推广工具
- python b64encode_python base64编码解码、SHA256编码、urlsafe_b64encode编码
- ADO,ADO.NET
- linux centos7增加文件夹权限,在Centos7系统中实现用户和文件权限的管理
- 【DBC】DBC文件格式详解
- Java经典算法——百钱百鸡
- 程序猿致富之路——(投资理财篇)
热门文章
- 物联网技术新品之一款可以检测噪声的数字噪声传感器
- 【转载与整理】多项式除法与综合除法
- jenkins 安装及配置部署操作 (jenkins+svn+tomcat and jenkins+git+maven+tomcat)
- MongoDB真的是无模式的吗?
- 鸿蒙系统荣耀8xmax,华为8月9日发布基于安卓10.0全新系统 自主鸿蒙会同台亮相
- python实现输出日历
- HTML大学班级活动网页设计 、大学校园HTML实例网页代码 、本实例适合于初学HTML的同学...
- 《编程求两个整数的和、差、积、商与余数》
- 04-swiper概述
- 口才盛宴丨 CBK第二阶段第一期训练营正式开营