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

这篇具有很好参考价值的文章主要介绍了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就用下面的那个文章来源地址https://www.toymoban.com/news/detail-727071.html

到了这里,关于asp.net core中间件预防防止xss攻击的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • ASP.NET Core中间件记录管道图和内置中间件

    下图显示了 ASP.NET Core MVC 和 Razor Pages 应用程序的完整请求处理管道 中间件组件在文件中添加的顺序 Program.cs 定义了请求时调用中间件组件的顺序以及响应的相反顺序。该顺序对于安全性、性能和功能 至关重要。   内置中间件 原文 翻译 Middleware Description Order 中间件 描述 命

    2024年02月13日
    浏览(26)
  • 如何在 ASP.NET Core 配置请求超时中间件

    本文参考官方文档,使用Asp.net core 8.0 的最小API 模板项目,配置超时中间件。 超时中间件可用于所有类型的ASP.NET Core应用:最小 API、带控制器的 Web API、MVC 和 Razor Pages。请求超时的属性位于命名空间 Microsoft.AspNetCore.Http.Timeouts 中。 需要注意的是,当应用在调试模式下运行时

    2024年01月20日
    浏览(28)
  • 1.ASP.NET Core中间件管道MAP的作用?

    简述: Map基于给定请求路径的匹配项来创建请求管道分支。可以针对不同的路径添加不同的中间件。 详解: 中间件是组装到应用程序管道中以处理请求和响应的软件组件。 每个组件都选择是否将请求传递给管道中的下一个组件,并可以在管道中调用下一个组件之前和之后执

    2024年02月17日
    浏览(24)
  • .net 温故知新【17】:Asp.Net Core WebAPI 中间件

    到这篇文章为止,关于.NET \\\"温故知新\\\"系列的基础知识就完结了,从这一系列的系统回顾和再学习,对于.NET core、ASP.NET CORE又有了一个新的认识。 不光是从使用,还包括这些知识点的原理,虽然深入原理谈不上,但对于日常使用也够了,我想的是知其然,知其所以然。 在实际

    2024年01月18日
    浏览(26)
  • ASP.NET Core如何知道一个请求执行了哪些中间件?

    需要添加两个Nuget包分别是: Microsoft.AspNetCore.MiddlewareAnalysis 和 Microsoft.Extensions.DiagnosticAdapter ,前者是分析记录中间件核心代码实现后者是用来接收日志输出的,由于是用的DiagnosticSource方式记录日志,所以需要使用DiagnosticListener对象的SubscribeWithAdapter方法来订阅。 这个适配器

    2023年04月09日
    浏览(28)
  • ASP.NET Core 的 Web Api 实现限流 中间件

    Microsoft.AspNetCore.RateLimiting  中间件提供速率限制(限流)中间件。 它是.NET 7 以上版本才支持的中间件,刚看了一下,确实挺好用,下面给大家简单介绍一下: RateLimiterOptionsExtensions 类提供下列用于限制速率的扩展方法:​​​​​ 固定窗口限制器 滑动窗口限制器 令牌桶限

    2024年01月17日
    浏览(22)
  • asp.net core 一种基于token 和 Permission 的权限管理中间件示例

    asp.net core webapi 下面,想做一个过滤权限的Filter,配合token,对api做一个较为细粒度的权限控制, 该filter (PermissionFilter) 的作用是用户LoginUser.Permissions 列表中有 Key指定的权限才可以访问,没有则返回403 错误码。   1. 先上封装后的使用效果 说明:要求登录即可,不要求特定权限

    2024年02月05日
    浏览(62)
  • 精通中间件测试:Asp.Net Core实战指南,提升应用稳定性和可靠性

    在上一章节我们实战了在 Asp.Net Core 中的项目实战,这一章节讲解一下如何测试 Asp.Net Core 的中间件。 还记得我们在集成测试中提供的 TestServer 吗? TestServer 是由 Microsoft.AspNetCore.TestHost 包提供的。包含了用于在测试环境中模拟 ASP.NET Core 应用程序的类和方法。通过使用 TestSe

    2024年04月22日
    浏览(24)
  • .net core 中间件

    先说一下 管道 这个概念: 在ASP.NET Core中,管道(Pipeline)是一个由多个中间件组成的处理请求和生成响应的机制。请求从第一个中间件开始,经过一系列中间件的处理,然后生成最终的响应。 每个中间件都会处理请求,并将请求传递给下一个中间件,直到达到最后一个中间

    2024年02月14日
    浏览(23)
  • .net core 中什么是中间件

    在 .NET Core 中,中间件(Middleware)是 ASP.NET Core 应用程序处理请求和响应的组件。中间件位于应用程序的请求处理管道中,它可以截获请求,执行一些逻辑,并将请求传递给下一个中间件或终止请求的执行。 中间件的主要作用是实现横切关注点,处理跨请求的功能和任务,例

    2024年01月17日
    浏览(26)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包