当前位置: 首页 > news >正文

asp.net core中间件预防防止xss攻击

using System;
using System.Text.Json;
using System.Text.Json.Serialization;namespace CommonUtils
{/// <summary>/// newtonsoft的转化器/// 防止xss攻击/// </summary>public class AntiXssNewtonsoftConverter : Newtonsoft.Json.JsonConverter<string>{/// <summary>/// 读取的时候/// 就是输入的时候进行处理/// </summary>/// <param name="reader"></param>/// <param name="objectType"></param>/// <param name="existingValue"></param>/// <param name="hasExistingValue"></param>/// <param name="serializer"></param>/// <returns></returns>public override string ReadJson(Newtonsoft.Json.JsonReader reader, Type objectType, string existingValue, bool hasExistingValue, Newtonsoft.Json.JsonSerializer serializer){//多次解码无影响,防止输出的时候多次编码导致字符串乱码var res = System.Web.HttpUtility.HtmlDecode(reader.Value.ToString());//进行编码res = System.Web.HttpUtility.HtmlEncode(res);return res;}/// <summary>/// 写出的时候/// 也可以在写出的时候进行,这里演示的写入的时候,到时候反过来就行了/// </summary>/// <param name="writer"></param>/// <param name="value"></param>/// <param name="serializer"></param>public override void WriteJson(Newtonsoft.Json.JsonWriter writer, string value, Newtonsoft.Json.JsonSerializer serializer){writer.WriteValue(value);}/*全局使用services.AddControllers().AddNewtonsoftJson(options=>{options.SerializerSettings.Converters.Add(new AntiXssSystemTextConverter());});某个属性使用[JsonConverter(typeof(AntiXssNewtonsoftConverter))]public string? Id { get; set; }*/}/// <summary>/// system.text.json转化器/// 原理同newtonsoft,主要是看web项目使用的是那个json序列化工具/// </summary>public class AntiXssSystemTextConverter : JsonConverter<string>{/// <summary>/// 读取的时候/// </summary>/// <param name="reader"></param>/// <param name="typeToConvert"></param>/// <param name="options"></param>/// <returns></returns>/// <exception cref="NotImplementedException"></exception>public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options){//多次解码无影响,防止输出的时候多次编码导致字符串乱码var res = System.Web.HttpUtility.HtmlDecode(reader.GetString());//进行编码res = System.Web.HttpUtility.HtmlEncode(res);return res;}/// <summary>/// 写出的时候/// </summary>/// <param name="writer"></param>/// <param name="value"></param>/// <param name="options"></param>/// <exception cref="NotImplementedException"></exception>public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options){writer.WriteStringValue(value);}/*全局使用services.AddControllers().AddJsonOptions(options=>{options.JsonSerializerOptions.Converters.Add(new AntiXssSystemTextConverter());});某个属性使用[JsonConverter(typeof(AntiXssSystemTextConverter))]public string? Id { get; set; }*/}
}

上面实现思路是针对json序列化后的string字符串进行编码防止xss攻击
其他实现比如中间件、Action的AOP方法也是可以的,可以自己实现

主要是看web项目使用的是那个json序列化工具newtonsoft就用newtonsoft,system.text.json就用下面的那个

相关文章:

asp.net core中间件预防防止xss攻击

using System; using System.Text.Json; using System.Text.Json.Serialization;namespace CommonUtils {/// <summary>/// newtonsoft的转化器/// 防止xss攻击/// </summary>public class AntiXssNewtonsoftConverter : Newtonsoft.Json.JsonConverter<string&…...

jvm概述

1、JVM体系结构 2、JVM运行时数据区 3、JVM内存模型 JVM运行时内存 共享内存区 线程内存区 3.1、共享内存区 共享内存区 持久带(方法区 其他) 堆(Old Space Young Space(den S0 S1)) 持久代&#xff1a; JVM用持久带&#xff08;Permanent Space&#xff09;实现方法…...

C++简单上手helloworld 以及 vscode找不到文件的可能性原因

helloworld #include <iostream>int main() {std::cout << "hello world!" << std::endl;return 0; }输入输出小功能 #include <iostream> using namespace std; /* *主函数 *输出一条语句 */int main() {// 输出一条语句cout << &q…...

掌动智能:性能压力测试的重要性

采用性能压力测试可以帮助企业预估系统容量、提升用户体验以及降低风险和成本。在软件开发过程中&#xff0c;将性能压力测试纳入测试策略的重要一环&#xff0c;将为企业的成功和用户满意度打下坚实的基础。 性能压力测试的重要性&#xff1a; 一、发现性能瓶颈 性能压力测试能…...

kafka日志文件详解及生产常见问题总结

一、kafka的log日志梳理 日志文件是kafka根目录下的config/server.properties文件&#xff0c;配置log.dirs/usr/local/kafka/kafka-logs&#xff0c;kafka一部分数据包含当前Broker节点的消息数据(在Kafka中称为Log日志)&#xff0c;称为无状态数据&#xff0c;另外一部分存在…...

Linux-Centos中配置docker

1.安装yum工具 yum install -y yum-utils 2.配置yam源头 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 3.安装docker yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 4. 查看d…...

IDEA-2023-jdk8 HelloWorld的实现

目录 1 新建Project - Class 2 编写代码 3 运行 1 新建Project - Class 选择"New Project"&#xff1a; 指名工程名、使用的JDK版本等信息。如下所示&#xff1a; 接着创建Java类&#xff1a; 2 编写代码 public class HelloWorld {public static void main(S…...

【1++的Linux】之进程(五)

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的Linux】 文章目录 一&#xff0c;什么是进程替换二&#xff0c;替换函数三&#xff0c;实现我们自己的shell 一&#xff0c;什么是进程替换 我们创建出来进程是要其做事情的&#xff0c;它可…...

用url类来访问服务器上的文件

场景一&#xff1a; package com.guonian.miaosha;import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL;…...

【重拾C语言】六、批量数据组织(二)线性表——分类与检索(主元排序、冒泡排序、插入排序、顺序检索、对半检索)

目录 前言 六、批量数据组织——数组 6.1~3 数组基础知识 6.4 线性表——分类与检索 6.4.1 主元排序 6.4.2 冒泡排序 6.4.3 插入排序 6.4.4 顺序检索&#xff08;线性搜索&#xff09; 6.4.5 对半检索&#xff08;二分查找&#xff09; 算法比较 前言 线性表是一种常…...

24 Python的sqlite3模块

概述 在上一节&#xff0c;我们介绍了Python的shutil模块&#xff0c;包括&#xff1a;shutil模块中一些常用的函数。在这一节&#xff0c;我们将介绍Python的sqlite3模块。sqlite3模块是Python中的内置模块&#xff0c;用于与SQLite数据库交互。SQLite是一个轻量级的磁盘数据库…...

ARM-流水灯

.text .global _start _start: 1、设置GPIOE寄存器的时钟使能 RCC_MP_AHB$ENSETR[4]->1 0x50000a28LDR R0,0X50000A28 LDR R1,[R0] 从R0起始地址的4字节数据取出放在R1 ORR R1,R1,#(0X3<<4) 第4位设置为1 STR R1,[R0] 写回2、设置PE10、PE8、PF10管脚为输出模式 …...

【虚拟机】NAT 模式下访问外网

目录 一、NAT 模式的作用原理 二、配置 NAT 模式实现外网访问 1、配置NAT模式的网段 2、虚拟机选择 VMnet8 网卡 3、IP地址设为自动分配 一、NAT 模式的作用原理 NAT模式下&#xff0c;虚拟机的系统会把宿主机当作一个大路由器&#xff0c;发送的网络请求和数据都是先发给…...

React 入门笔记

前言 国庆值班把假期拆了个稀碎, 正好不用去看人潮人海, 趁机会赶个晚集入门一下都火这么久的 React 前端技术. 话说其实 n 年前也了解过一丢丢来着, 当时看到一上来就用 JS 写 DOM 的套路直接就给吓退了, 扭头还去看 Vue 了&#x1f923;, 现在从市场份额 社区活度来看, 确实…...

Ubuntu MySQL

在安装前&#xff0c;首先看你之前是否安装过&#xff0c;如果安装过&#xff0c;但是没成功&#xff0c;就要先卸载。 一、卸载 1.查看安装 dpkg --list | grep mysql 有东西&#xff0c;就说明您之前安装过mysql。 2.卸载 先停掉server sudo systemctl stop mysql.servic…...

大数据软件系统开发框架

大数据处理框架是用于处理大规模数据集的软件工具和平台&#xff0c;它们可以帮助分析、存储和处理庞大的数据量。以下是一些常见的大数据处理框架&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.A…...

rust变量

一 、变量定义 &#xff08;一&#xff09;语法格式 使用let关键字定义变量 let varname: type value; 如&#xff0c;let a: i32 78;也可以不显式指定类型 let varname value; 如&#xff0c;let a 78;一些例子 1.布尔 let t true; let f: bool false;2.整数 let a …...

蓝桥杯---第一讲 递归与递推

文章目录 前言Ⅰ. 递归实现指数型枚举0x00 算法思路0x00 代码书写0x00 思考总结 Ⅱ. 递归实现排列型枚举0x00 算法思路0x01代码书写0x02 思考总结 Ⅲ. 简单斐波那契0x00 算法思路0x01 代码书写 Ⅳ. 费解的开关0x00 算法思路0x01 代码书写 Ⅴ. 递归实现组合型枚举0x00 算法思路0…...

OpenCV 15(SIFT/SURF算法)

一、SIFT Harris和Shi-Tomasi角点检测算法&#xff0c;这两种算法具有旋转不变性&#xff0c;但不具有尺度不变性&#xff0c;以下图为例&#xff0c;在左侧小图中可以检测到角点&#xff0c;但是图像被放大后&#xff0c;在使用同样的窗口&#xff0c;就检测不到角点了。 尺度…...

前端二维码图片解析图片识别/网络图片解析成链接/图片网络链接转本地链接(Js/Vue/Jquery)

注&#xff1a;需要用到canvas/jsqr/jquery&#xff01; 1、远程图片链接本地化 页面&#xff1a; <!-- 识别二维码用的 canvas--> <canvas class"canvas" ref"canvas" style"display: none"></canvas> 1.创建图片 get2: fu…...

重塑游戏社交:Nucleus Co-Op如何用一台电脑创造四人同屏体验

重塑游戏社交&#xff1a;Nucleus Co-Op如何用一台电脑创造四人同屏体验 【免费下载链接】nucleuscoop Starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop 问题&#xff1a;本地多人…...

第六届机械制造与智能控制国际学术会议(ICMMIC 2026)

第六届机械制造与智能控制国际学术会议&#xff08;ICMMIC 2026&#xff09;将于2026年6月12-14日在中国浙江湖州隆重举行。本次会议旨在汇聚全球“机械制造、智能控制”领域的学者、专家、研发者和技术人员&#xff0c;共同探讨学术前沿&#xff0c;分享科研成果&#xff0c;促…...

谷歌seo付费外链是什么? 深度拆解5种主流的外链买卖方式

在目前的搜索环境下&#xff0c;想要让网站在没有外部引荐的情况下出现在搜索结果前排&#xff0c;难度不亚于在一座无人的深山里开店却希望客流量爆满。链接建设&#xff0c;或者说大家心照不宣的“外链买卖”&#xff0c;已经变成了提升排名的必经之路。一、 揭开付费外链的真…...

Qdrant 如何配置 API Key 认证

Qdrant 如何配置 API Key 认证 Qdrant 是当下最流行的向量数据库之一&#xff0c;广泛应用于 RAG&#xff08;检索增强生成&#xff09;、相似度搜索、AI 应用等场景。生产环境中&#xff0c;API Key 认证是保障数据安全的基本手段。本文详细介绍 Qdrant 的 API Key 配置方法&a…...

Windows安卓子系统终极指南:从基础配置到专业开发全流程

Windows安卓子系统终极指南&#xff1a;从基础配置到专业开发全流程 【免费下载链接】WSA Developer-related issues and feature requests for Windows Subsystem for Android 项目地址: https://gitcode.com/gh_mirrors/ws/WSA 想要在Windows 11上无缝运行安卓应用吗&…...

工业控制系统安全实践:基于ISA-62443-3-3标准的OT/IT融合指南

1. 项目概述&#xff1a;当工业安全遇上新标准在工业自动化领域摸爬滚打了十几年&#xff0c;我见过太多因为安全标准“两张皮”而引发的头疼事。一边是负责生产线的工控工程师&#xff0c;他们的核心信条是“稳定压倒一切”&#xff0c;任何可能影响PLC运行周期、导致电机意外…...

AI技能包实战:用cc-skills打造专业级AI编程助手

1. 项目概述&#xff1a;为你的AI助手装上“专业工具箱”如果你和我一样&#xff0c;每天都在和Claude、Cursor、Copilot这类AI编程助手打交道&#xff0c;那你肯定遇到过这样的场景&#xff1a;想让AI帮你写一篇符合公司技术博客规范的PR稿&#xff0c;或者生成一段精准的Prom…...

计算机视觉模型选型实战:四维战场决策法

1. 项目概述&#xff1a;这不是一场技术选型&#xff0c;而是一次实战能力的现场测验 “计算机视觉的战场&#xff1a;选择你的冠军”——这个标题乍看像游戏海报&#xff0c;实则精准戳中了当前CV工程落地最真实的痛点。它不谈论文指标、不堆模型参数&#xff0c;而是把镜头直…...

计算机视觉数据集选型实战指南:从COCO到Roboflow的工程决策框架

1. 这份清单不是“资料库目录”&#xff0c;而是计算机视觉工程师的实战弹药箱如果你正在训练一个能识别工业零件表面微小划痕的模型&#xff0c;却在COCO数据集上反复调参&#xff1b;或者你刚拿到一批医院提供的CT影像&#xff0c;第一反应是去Kaggle搜“medical image datas…...

Next.js功能开关实践:用happykit/flags实现灰度发布与A/B测试

1. 项目概述&#xff1a;为什么我们需要一个功能开关系统&#xff1f;在软件开发&#xff0c;尤其是现代Web应用和微服务架构的迭代过程中&#xff0c;我们经常面临一个经典困境&#xff1a;新功能开发完成后&#xff0c;是直接全量发布给所有用户&#xff0c;还是先小范围灰度…...