HtmlSanitizer: 一个保护你的网站免受XSS攻击的.Net开源项目

Html跨站脚本攻击(XSS)是非常常见的,比如博客评论、论坛帖子、社交媒体发布动态等一些用户提交文本的地方,都有可能遭受恶意提交Html代码。

为了确保用户提交内容的安全,我们就需要对用户提交内容进行过滤。

01 项目简介

HtmlSanitizer 是一个强大的库,它能够审查和清理 HTML 内容,移除或转义那些可能被用于 XSS 攻击的标签和属性。

这个工具的核心功能是提供一个安全的方式来处理用户提交的 HTML,确保这些内容在被渲染到网页上之前是无害的。

02 项目特点

1、默认规则清理机制

HtmlSanitizer 通过一系列默认规则来识别和处理潜在的危险 HTML。它不仅移除那些明显有害的标签,如

比如以下默认允许的标签和属性。

图片

2、灵活的配置选项

可以根据项目的需求配置 HtmlSanitizer,决定哪些标签和属性是允许的。

3、简单易用

该工具使用还是比较简单的,可以轻松集成到现有的 Web 应用程序中。

03 使用方法

1、简单示例:清理 HTML 内容

// 引入Ganss.Xss命名空间,以便使用HtmlSanitizer类
using Ganss.Xss;// 创建HtmlSanitizer类的实例
var sanitizer = new HtmlSanitizer();// 定义一个包含潜在XSS攻击向量的HTML字符串
// 这里的HTML包含<script>标签和带有JavaScript代码的onload属性
// 以及一个带有JavaScript代码的style属性
var html = @"<script>alert('xss')</script><div onload=""alert('xss')"""+ @"style=""background-color: rgba(0, 0, 0, 1)"">Test<img src=""test.png"""+ @"style=""background-image: url(javascript:alert('xss')); margin: 10px""></div>";// 使用sanitizer对象的Sanitize方法来清理HTML
// 第一个参数是要清理的HTML字符串
// 第二个参数是基URL,用于解析相对URL
var sanitized = sanitizer.Sanitize(html, "https://www.xxx.com");// 定义一个期望的清理后的HTML字符串
// 这个字符串中不包含任何脚本,只包含安全的样式和图像
var expected = @"<div style=""background-color: rgba(0, 0, 0, 1)"">"+ @"Test<img src=""https://www.xxx.com/test.png""  style=""margin: 10px""></div>";// 使用Assert.Equal方法来验证清理后的HTML是否符合预期
Assert.Equal(expected, sanitized);

2、添加允许的属性

var sanitizer = new HtmlSanitizer();
sanitizer.AllowedAttributes.Add("class");
var sanitized = sanitizer.Sanitize(html);

3、添加允许的URL方案

var sanitizer = new HtmlSanitizer();
// 允许用户点击链接直接发送邮件
sanitizer.AllowedSchemes.Add("mailto");

04 项目地址

https://github.com/mganss/HtmlSanitizer

- End -

推荐阅读

2个零基础入门框架教程!

盘点3个C#控制台的GUI框架!

盘点6个.NetCore+Vue前后端分离的开源项目

盘点3个.Net二维码开源项目!

盘点下5个Winform UI开源控件库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/416010.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于TensorFlow框架的手写数字识别系统(代码+论文+开题报告等)

手写数字识别 需安装Python3.X 64bit相关版本、Tensorflow 1.x相关版本 IDE建议使用Pycharm 打开main.py&#xff0c;运行即可 1.4 研究方法 实验研究表明&#xff0c;若手写体数字没有限制&#xff0c;几乎可以肯定没有一劳永逸的方法能同时达到90%以上的识别率和较快的识别…

大模型备案重难点最详细说明【评估测试题+附件】

2024年3月1日&#xff0c;我国通过了《生成式人工智能服务安全基本要求》&#xff08;以下简称《AIGC安全要求》&#xff09;&#xff0c;这是目前我国第一部有关AIGC服务安全性方面的技术性指导文件&#xff0c;对语料安全、模型安全、安全措施、词库/题库要求、安全评估等方面…

qmt量化交易策略小白学习笔记第59期【qmt编程之期权数据--获取指定期权品种的详细信息--原生Python】

qmt编程之获取期权数据 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 基于BS模型计算欧式期权理论价格 基于Black-Scholes-Merton模型&#xff0c;输入期权标的价格、期权行权价、无风险利率…

【技术分享】顶尖 GIS 技术

谈到 GIS&#xff0c;就不能不提到现代地理智能。是指基于 GIS、遥感和卫星定位技术的地理空间可视化、分析、决策、设计和控制的技术总称。地理智能是 GIS 区别于其他信息技术最重要的价值之一。它由地理可视化、地理决策、地理设计、地理控制四个层次组成。它们形成了一个地理…

ES6 day-03

目录 一. ES6 函数 1.1 函数参数的扩展 1.1.1 默认参数 1.1.2 不定参数 1.2 箭头函数 二. Iterator(迭代器) 三. ES6 Promise 对象(重点) 3.1 Promise前言 3.1.1 Promise概述 3.1.2 Promise 状态 3.1.3 then 方法 3.2 基本使用 3.2 promise结合数据请求 3.3 回调…

中国各省份-环境规制相关数据(2000-2022年)

环境规制&#xff0c;也称为环保政策和污染治理&#xff0c;是一系列由政府制定的旨在解决环境问题、保护生态环境和促进可持续发展的政策措施。这些措施包括法律法规、行政命令、经济激励和市场机制等&#xff0c;目的是约束和指导企业和个人行为&#xff0c;减少对环境的负面…

pikachu文件包含漏洞靶场通关攻略

本地文件包含 先上传一个jpg文件&#xff0c;内容写上<?php phpinfo();?> 上传成功并且知晓了文件的路径 返回本地上传&#xff0c;并../返回上级目录 可以看到我们的php语句已经生效 远程文件包含 在云服务器上创建一个php文件 然后打开pikachu的远程文件包含靶场&…

企业级RAG应用优化整合贴【上】:数据索引阶段的8个必知技巧 |建议收藏

基于大模型的RAG应用&#xff0c;一个普遍的认识是&#xff1a; 做原型很简单&#xff0c;投入生产很难 为什么我的RAG应用很难按预期工作&#xff1f;在之前的文章中我们曾经陆续的对RAG应用优化做过零星与局部的探讨&#xff0c;如融合检索、查询转换、多模态处理、Agentic…

link .css加载失败事件

https://andi.cn/page/621728.html 博客中的代码可以一键运行代码运行平台点击工具按钮可以查看console消息

【C++题解】1241 - 角谷猜想

问题二&#xff1a;1241 - 角谷猜想 类型&#xff1a;有规律的循环、递归。 题目描述&#xff1a; 日本一位中学生发现一个奇妙的定理&#xff0c;请角谷教授证明&#xff0c;而教授无能为力&#xff0c;于是产生了角谷猜想。 猜想的内容&#xff1a;任给一个自然数&#xff…

鸿蒙开发入门day16-拖拽事件和手势事件

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;还请三连支持一波哇ヾ(&#xff20;^∇^&#xff20;)ノ&#xff09; 目录 拖拽事件 概述 拖拽流程 ​手势拖拽 ​鼠标拖拽 拖拽背板图 …

疑似女友通过社交媒体泄露其本人位置数据,导致了杜罗夫的被捕?

以下引用百度百科&#xff1a; 帕维尔杜罗夫&#xff08;俄文&#xff1a;Павел Дуров&#xff0c;英文&#xff1a;Pavel Durov&#xff09;&#xff0c;男&#xff0c;1984年10月10日出生于俄罗斯列宁格勒州&#xff08;今圣彼得堡市&#xff09;&#xff0c;毕业…

Guava Cache实现原理及最佳实践

本文内容包括Guava Cache的使用、核心机制的讲解、核心源代码的分析以及最佳实践的说明。 概要 Guava Cache是一款非常优秀本地缓存&#xff0c;使用起来非常灵活&#xff0c;功能也十分强大。Guava Cache说简单点就是一个支持LRU的ConcurrentHashMap&#xff0c;并提供了基于…

4.1 数据分析-excel 基本操作

第四节&#xff1a;数据分析-excel 基本操作 课程目标 学会excel 基本操作 课程内容 数据伪造 产生一份招聘数据 import pandas as pd from faker import Faker import random import numpy as np# 创建一个Faker实例&#xff0c;用于生成假数据&#xff0c;指定中文本地…

不小心删除丢失了所有短信?如何在 iPhone 上查找和恢复误删除的短信

不小心删除了一条短信&#xff0c;或者丢失了所有短信&#xff1f;希望还未破灭&#xff0c;下面介绍如何在 iPhone 上查找和恢复已删除的短信。 短信通常都是非正式和无关紧要的&#xff0c;但短信中可能包含非常重要的信息。因此&#xff0c;如果您删除了一些短信以清理 iPh…

MASt3R:从3D的角度来实现图像匹配(更新中)

Abstract 图像匹配是 3D 视觉中所有性能最佳算法和pipeline的核心组件。 然而&#xff0c;尽管匹配从根本上来说是一个 3D 问题&#xff0c;与相机姿态和场景几何结构有内在联系&#xff0c;但它通常被视为一个 2D 问题。因为匹配的目标是建立 2D 像素字段之间的对应关系&#…

MYSQL:删除指定时间范围内每个电站每天发电数据除最大值以外的记录

有一个需求&#xff0c;需要保留每个电站每一天发电数据的最大值记录&#xff0c;其余删除。 表数据大概长这样&#xff1a; MYSQL 5.7写法&#xff1a;&#xff08;因为不支持ROW_NUMBER()函数&#xff0c;采用自定义的变量来代替&#xff09; 首次清理一年内数据&#xff1…

在Postgresql中计算工单的对应的GPS轨迹距离

一、概述 在某个App开发中&#xff0c;要求记录用户的日常轨迹&#xff0c;在用户巡逻设备的时&#xff0c;将记录的轨迹点当做该设备巡逻时候的轨迹。 由于业务逻辑上没有明确的指示人员巡逻工单-GPS位置之间的关系&#xff0c;所以通过时间关系进行轨迹划定。 二、创建测试表…

备受500强企业青睐的安全数据交换系统,到底有什么优势?

网络隔离成为常见的安全手段 网络隔离技术已成为许多企业进行网络安全建设的重要手段之一&#xff0c;党政单位、金融机构、半导体企业、以及能源电力、医疗、生物制药等等行业及领域的企业都会选择方式不一的网络隔离技术来保护自己的网络安全&#xff0c;规避互联网中的网络…

python开发--模板语句

这部分是导航栏部分的代码&#xff0c;由于导航栏在各个页面都需要用&#xff0c;为了提高代码复用率将导航栏部分作为一个模板。 在下面代码图中&#xff0c;红色框部分相当于一个插槽&#xff0c;其他页面&#xff0c;如部门列表、用户列表等将在这个位置展示。 这部分是用户…