文章目录

  • 前言
  • 一、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中间件相关推荐

  1. 【愚公系列】2023年01月 .NET CORE工具案例-基于SqlSugar的多库多表融合查询

    文章目录 前言 一.基于SqlSugar的多库多表融合查询 1.安装包 2.订单表 3.添加连接 3.1 初始化添加 3.2 动态添加 4.查询 4.1 子表对主表(一对一)查询 4.2 主表对子表( ...

  2. 【愚公系列】2023年02月 .NET CORE工具案例-Lunar日历转换

    文章目录 前言 一.Lunar日历转换 1.安装包 2.相关代码 3.运行 二.用途 1.年历 2.月历 3.佛历 4.道历 5.上班摸鱼 前言 真正的日历产生,大约在一千一百多年前的唐顺宗永贞元年, ...

  3. 【愚公系列】2023年01月 .NET CORE工具案例-CS-Script脚本执行引擎

    文章目录 前言 一.CS-Script脚本执行引擎 1.安装包 2.具体使用 2.1 CompileMethod 2.2 LoadMethod 2.3 LoadCode 2.4 CompileCode ...

  4. 【愚公系列】2023年02月 .NET CORE工具案例-Caliburn.Micro的使用基于WPF的改造的MVVM案例

    文章目录 前言 1.Caliburn.Micro是什么 2.Caliburn.Micro的主要功能 一.Caliburn.Micro的使用基于WPF的改造 1.项目介绍 2.安装软件包 3.改造App ...

  5. 【愚公系列】2023年01月 .NET CORE工具案例- Magick.NET神级图片和视频操作库

    文章目录 前言 一.Magick.NET的使用 1.安装包 2.图像的操作 2.1 图像读取 2.1 图像大小改变 2.2 图像格式转换 2.3 PDF转换 2.4 添加水印.文本 2.5 图片合并 ...

  6. 【愚公系列】2023年04月 .NET CORE工具案例-二维码生成器QRCoder

    文章目录 前言 一.二维码生成器QRCoder 1.QRCoder是什么 2.安装包 3.普通二维码 3.1 创建二维码 3.2 设置二维码颜色 3.3 带logo的二维码 4.艺术二维码 4.1 创 ...

  7. 【愚公系列】2023年02月 .NET CORE工具案例-办公文档神器Toxy的使用

    文章目录 前言 一.办公文档神器Toxy的使用 1.安装对应的包 2.Word文档操作 2.1 普通文档解析 2.2 表格文档解析 3.Excel文件操作 4.PDF文档操作 5.图片文件操作 总结 ...

  8. 【愚公系列】2022年11月 .NET CORE工具案例-.NET 7中的WebTransport通信

    文章目录 前言 1.技术背景 2.QUIC相关概念 3.HTTP/3.0 一.WebTransport 1.WebTransport概念 2.WebTransport在js中的使用 3.WebTran ...

  9. 【愚公系列】2022年12月 .NET CORE工具案例-多语言离线翻译系统

    文章目录 前言 1.在线翻译 2.离线翻译 一.多语言离线翻译系统 1.开发环境 2.准备离线翻译包 3.准备python代码 4.调试翻译结果 5.Python翻译服务对接到.NET Core 前言 ...

最新文章

  1. git 查看公共commit_git使用点滴:如何查看commit的内容
  2. GRE OVER IPSEC
  3. 分类模型的评估方法-正确率(Accuracy)
  4. Windows Mobile的高效贴图
  5. SaaS产品设计,从0到1案例实操
  6. 根据xml生成相应的对象类
  7. OpenCV之cvSmooth函数平滑滤波
  8. w ndows7端口在哪里,win7电脑遇到端口被占用的情况该如何查看并将其关闭
  9. VScode 搭建 django 开发环境(Win Python3.71 django1.11.11)
  10. vue.js 父子组件间 props 数据同步处理
  11. 晶振PCB layout注意事项
  12. 百度搜索移动端流量词热度统计方法
  13. JavaScript基础--DOM部分02--李南江
  14. 史上最全自媒体推广工具
  15. python b64encode_python base64编码解码、SHA256编码、urlsafe_b64encode编码
  16. ADO,ADO.NET
  17. linux centos7增加文件夹权限,在Centos7系统中实现用户和文件权限的管理
  18. 【DBC】DBC文件格式详解
  19. Java经典算法——百钱百鸡
  20. 程序猿致富之路——(投资理财篇)

热门文章

  1. 物联网技术新品之一款可以检测噪声的数字噪声传感器
  2. 【转载与整理】多项式除法与综合除法
  3. jenkins 安装及配置部署操作 (jenkins+svn+tomcat and jenkins+git+maven+tomcat)
  4. MongoDB真的是无模式的吗?
  5. 鸿蒙系统荣耀8xmax,华为8月9日发布基于安卓10.0全新系统 自主鸿蒙会同台亮相
  6. python实现输出日历
  7. HTML大学班级活动网页设计 、大学校园HTML实例网页代码 、本实例适合于初学HTML的同学...
  8. 《编程求两个整数的和、差、积、商与余数》
  9. 04-swiper概述
  10. 口才盛宴丨 CBK第二阶段第一期训练营正式开营