.NET中使用HtmlSanitizer来有效的防范XSS攻击!

这篇具有很好参考价值的文章主要介绍了.NET中使用HtmlSanitizer来有效的防范XSS攻击!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0X00 前言

随着互联网的发展,网络安全问题越来越受到关注。XSS攻击作为最常见的网络安全漏洞之一,对企业和用户的信息安全构成严重威胁。.NET开发人员可以使用HtmlSanitizer来有效防范XSS攻击,确保网站的安全性。

HtmlSanitizer是一个.NET开源库,用于从可能导致XSS攻击的构造中清除HTML片段和文档。 它使用AngleSharp来解析,操作和渲染HTML和CSS。从而避免标签中毒,即一个片段中的无效 HTML 可能会损坏整个文档,从而导致布局或样式损坏。

HtmlSanitizer可以通过以下方式进行定制:

  • 通过属性配置允许的 HTML 标记。所有其他标签将被剥离。AllowedTags
  • 通过属性 配置允许的 HTML 属性。所有其他属性将被剥离。AllowedAttributes
  • 通过属性 配置允许的 CSS 属性名称。所有其他样式将被剥离。AllowedCssProperties
  • 通过属性 配置允许的 CSS 规则。所有其他规则将被剥离。AllowedAtRules
  • 通过属性配置允许的 URI 方案。所有其他 URI 将被剥离。AllowedSchemes
  • 通过属性配置包含 URI(如“src”、“href”等)的 HTML 属性。UriAttributes
  • 提供将用于解析相对 URI 的基本 URI。
  • 在删除标记、属性或样式之前,会引发可取消的事件。

0x01 使用方法

1、安装 HtmlSanitizer NuGet 包

NuGet\Install-Package HtmlSanitizer -Version 8.0.645
//或
dotnet add package HtmlSanitizer --version 8.0.645

2、基本使用

using Ganss.XSS;
var sanitizer = new HtmlSanitizer();  
sanitizer.AllowTags("a", "em", "strong");  
sanitizer.AllowAttributes("href").OnElements("a");  
sanitizer.AllowUnsafeRaw().OnElements("em", "strong");

以上代码允许保留<a><em><strong>标签,并允许href属性在<a>标签中使用,同时允许保留未经过滤的文本在<em><strong>标签中使用。

3、输出显示
假设输入内容为<script>alert('xss');</script><strong>Some text</strong>,使用HtmlSanitizer进行清洗、过滤

using Ganss.XSS;
// 创建一个HtmlSanitizer实例
var sanitizer = new HtmlSanitizer();

// 配置允许的标签、属性等(可选)
sanitizer.AllowedTags.Add("strong");
sanitizer.AllowedTags.Add("em");
sanitizer.AllowedTags.Add("u");

// 清理HTML内容
string inputHtml = "<script>alert('xss');</script><strong>Some text</strong>";
string sanitizedHtml = sanitizer.Sanitize(inputHtml);

这段代码使用AllowedTags属性配置了允许的HTML标签。在这个例子中,<strong><em><u>标签被允许。而潜在的危险脚本<script>alert('xss');</script>将被删除。
最后可以在Razor页面中使用Html.Raw方法输出清理后的HTML内容:

@Html.Raw(sanitizedHtml)

再看一个例子:

using Ganss.XSS;
var sanitizer = new HtmlSanitizer();
var html = @"<script>alert('xss')</script><div οnlοad=""alert('xss')"""
    + @"style=""background-color: test"">Test<img src=""test.gif"""
    + @"style=""background-image: url(javascript:alert('xss')); margin: 10px""></div>";
var sanitized = sanitizer.Sanitize(html, "http://www.example.com");
Console.WriteLine(sanitized);

代码中,定义了一个包含多个HTML危险的字符串html。该字符串包含<script><div><img>等标签,其中包含了一些可能会执行恶意代码的属性。尤其注意<div onload=""alert('xss')""" 。然后使用Sanitize方法清理HTML字符串并返回安全的内容sanitized。在这个例子中,清理后的内容仍然包含原始的HTML标记,但是所有潜在的危险代码都被删除了。
输出的内容为:

<div>Test<img src="http://www.example.com/test.gif" style="margin: 10px"></div>

更多的用法,可以到HtmlSanitizer的案例页面进行查看。
最后,附上HtmlSanitizer的开源地址:https://github.com/mganss/HtmlSanitizer文章来源地址https://www.toymoban.com/news/detail-487010.html

到了这里,关于.NET中使用HtmlSanitizer来有效的防范XSS攻击!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CSRF 攻击和 XSS 攻击分别代表什么?如何防范?

    一:PHP         1. CSRF 攻击和 XSS 攻击分别代表什么?                 1.CSRF攻击                 1.概念:                 CSRF(Cross-site request forgery)跨站请求伪造,用户通过跨站请求,以合法身份做非法的事情                 2.原理:            

    2024年02月13日
    浏览(19)
  • 【web安全】XSS攻击(跨站脚本攻击)如何防范与实现

    目录 XSS介绍 防范要点 实现方法 XSS攻击(跨站脚本攻击)是一种常见的Web安全漏洞,攻击者在Web页面中插入恶意脚本代码,并在受害人访问该页面时执行脚本代码,从而获取用户敏感信息、操作受害人账号或篡改页面内容等不当行为。XSS攻击可以通过输入表单、搜索框、评论

    2024年02月12日
    浏览(15)
  • 【ASP.NET Core 基础知识】--安全性--防范常见攻击

    在现实网络中即存在着安全的流量,又存在着不安全的流量在,这些不安全的流量常常会对我们的网站服务造成威胁,严重的甚至会泄露用户的隐私信息。这篇文章我们通过对常见的网络攻击 跨站脚本攻击 、 跨站请求伪造(CSRF) 、 SQL注入 、 敏感数据泄露 、 身份验证与授权

    2024年02月20日
    浏览(24)
  • asp.net core中间件预防防止xss攻击

    上面实现思路是针对json序列化后的string字符串进行编码防止xss攻击 其他实现比如中间件、Action的AOP方法也是可以的,可以自己实现 主要是看web项目使用的是那个json序列化工具newtonsoft就用newtonsoft,system.text.json就用下面的那个

    2024年02月07日
    浏览(29)
  • Angular 使用DomSanitizer防范跨站脚本攻击

    简称XSS,是代码注入的一种,是一种网站应用程序的安全漏洞攻击。它允许恶意用户将代码注入到网页上,其他用户在使用网页时就会收到影响,这类攻击通常包含了HTML和用户端脚本语言(JS)。 XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指

    2024年04月15日
    浏览(17)
  • 容器安全 - 利用容器的特权配置实现对Kubernetes攻击,以及如何使用 PSA 防范风险(视频)

    《OpenShift / RHEL / DevSecOps 汇总目录》 通过将运行 Pod 的 privileged 设为 true,容器就以特权模式运行在宿主机上。和普通容器相比,特权容器具有非常大的权限和能力。 容器被赋予所有能力 不屏蔽敏感路径,例如 sysfs 中的 kernel 模块 within Any sysfs and procfs mounts are mounted RW AppArm

    2024年02月04日
    浏览(22)
  • 使用vue-dompurify-html防御xss攻击

    之前的防御xss攻击的前端方案太low,影响到了现网用户的体验,但是富文本渲染势不可挡,v-html确实又会被xss攻击,这时vue-dompurify-html就来了!! 我们这里还是以vue2为例 信心满满给业务爸爸测试,好,a标签的 target=\\\"_blank\\\" 属性给干没了,这可是很重要的属性,上官网看看

    2024年02月06日
    浏览(24)
  • 什么是DDoS攻击?如何防范DDoS攻击?

    DDoS攻击是最常见、破坏力最强的网络攻击手段之一,对网络安全稳定造成了严重威胁,因此了解DDoS攻击的运行机制以及如何有效应对DDoS攻击十分有必要。本文中科三方针对DDoS攻击特点和防御手段做下介绍。 什么是DDoS攻击? DDoS全称Distributed Denial of Service,中文译作分布式拒

    2023年04月09日
    浏览(53)
  • 保护网站安全:学习蓝莲花的安装和使用,复现跨站脚本攻击漏洞及XSS接收平台

     这篇文章旨在用于网络安全学习,请勿进行任何非法行为,否则后果自负。  环境准备 攻击介绍 原理 攻击者通过向目标网站提交包含恶意脚本的请求,然后将该恶意脚本注入到响应页面中,使其他用户在查看包含注入恶意脚本的页面时运行该恶意脚本。 图片来源 使用方法

    2024年02月10日
    浏览(22)
  • shell脚本-DOS攻击防范(自动屏蔽攻击IP)

    找出异常ip 通过获取服务器access.log日志信息,获取时间在每分钟之内每个ip访问的次数来判断此ip是否是DOS攻击。 grep $(date +%d/%b/%Y:%H:%M) 过滤得到没分钟之内的page被访问的信息 awk \\\'{a[$1]++}END{for (i in a)print i,a[i]}\\\' 再通过awk命令过滤得到每分钟访问page的ip和次数 示例: 再限制一下

    2024年02月16日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包