首页 > 数据库 >记一次反向代理过滤sql注入

记一次反向代理过滤sql注入

时间:2024-06-18 16:02:16浏览次数:17  
标签:Regex return 401 Request item 过滤 反向 context sql

公司有一php系统,由于该系统是购买的,并且没人懂php,无法通过修改代码过滤sql注入问题

 

代码如下:

    public class Program
    {
        public static void Main(string[] args)
        {
            var builder = WebApplication.CreateBuilder(args);
            builder.Services.AddReverseProxy()
                .LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"))
                ;

            var app = builder.Build();

            app.Use(SQLFirewall);

            app.MapReverseProxy();
            app.Run();
        }

        public static async Task SQLFirewall(HttpContext context, Func<Task> next)
        {
            const string regStr1 = "ldap:|rmi:|JDBC4Connection|trax\\.TemplatesImpl|%bf%27";
            const string regStr2 = "\\b(select|update|delete|insert|drop|create|call|alter|execute|exec|grant|truncate|master|load_file|outfile)\\b";
            context.Request.EnableBuffering();

            foreach (var item in context.Request.Query) {
                if (Regex.IsMatch(item.Value, regStr1, RegexOptions.IgnoreCase)) { context.Response.StatusCode = 401; return; }
                if (Regex.IsMatch(item.Value, regStr2, RegexOptions.IgnoreCase)) { context.Response.StatusCode = 401; return; }
            }
            if (context.Request.Method == "POST" && context.Request.Form != null) {
                foreach (var item in context.Request.Form) {
                    if (Regex.IsMatch(item.Value, regStr1, RegexOptions.IgnoreCase)) { context.Response.StatusCode = 401; return; }
                    if (Regex.IsMatch(item.Value, regStr2, RegexOptions.IgnoreCase)) { context.Response.StatusCode = 401; return; }
                }
            }
            await next.Invoke();
        }

    }

配置文件如下:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ReverseProxy": {
    "Routes": {
      "route1": {
        "ClusterId": "cluster1",
        "Match": {
          "Path": "{**catch-all}"
        }
      }
    },
    "Clusters": {
      "cluster1": {
        "Destinations": {
          "destination1": {
            "Address": "https://www.baidu.com"
          }
        }
      }
    }
  }
}

 

标签:Regex,return,401,Request,item,过滤,反向,context,sql
From: https://www.cnblogs.com/toolgood/p/18254518

相关文章

  • sqlmap
    sqlmap:https://blog.csdn.net/weixin_43819747/article/details/136736688 谷歌插件:PageSpeedInsights,分析网页加载速度的性能瓶颈,https://pagespeed.web.dev/  接口需要token,怎么用sqlmap进行渗透测试?在使用sqlmap进行渗透测试时,如果接口需要token,可以通过在请求中附......
  • SQL SERVER ANALYSIS SERVICES决策树、聚类、关联规则挖掘分析电商购物网站的用户行为
    全文链接:http://tecdat.cn/?p=32118最近我们被客户要求撰写关于电商购物网站的用户行为的研究报告,包括一些图形和统计输出。假如你有一个购物类的网站,那么你如何给你的客户来推荐产品呢? ( 点击文末“阅读原文”获取完整文档、数据 )这个功能在很多电商类网站都有,那么,通过SQLS......
  • java之sql注入代码审计
    java之sql注入代码审计前言其实找到漏洞原因很简单,主要想学习一下JDBCsql的过程JDBC简单介绍Java通过java.sql.DriverManager来管理所有数据库的驱动注册,所以如果想要建立数据库连接需要先在java.sql.DriverManager中注册对应的驱动类,然后调用getConnection方法才能连接上数......
  • Net6 EFCore 基于MSSQL & T4 自动生成字段注释
    文件模板代码<#@templatelanguage="C#"#><#@outputextension=".cs"#><#@assemblyname="System.Core"#><#@importnamespace="System.IO"#><#@importnamespace="System.Linq"#>......
  • MySQL动态权限详解
    MySQL数据库系统在管理用户访问控制时,除了传统的静态权限之外,还引入了动态权限的概念。动态权限机制为系统管理员提供了更为灵活和细致的权限管理方式,允许根据运行时环境和特定组件的需求来定义和授予权限。本文将深入探讨MySQL动态权限的特性和应用方法。动态权限的基本概念......
  • 【MySQL】复合查询和内外连接
    文章目录MySQL复合查询和内外连接1.复合查询1.1多表查询1.2自连接1.3子查询单行子查询多行子查询多列子查询from中使用子查询合并查询2.内外连接1.INNERJOIN2.LEFTJOIN3.RIGHTJOIN4.FULLJOIN5.CROSSJOINMySQL复合查询和内外连接1.复合查询1.1......
  • MySQL:创建账户及修改密码
    1、创建账户MySQL5.8:grantallprivilegeson*.*totst@%identifiedby'123456';MySQL8.0:createuser'tst'@'%'identifiedby'123456';grantallprivilegeson*.*to'tst'@'%'withgrantoption;......
  • sql注入之联合查询的学习记录
    我本人也是一个小白有什么错误的地方希望大佬可以指出,有什么疑问也可以留言,希望可以互相交流学习一下。 sql注入经典之联合注入关于联合注入是sql注入中最经典的也是大部分初学ctf的师傅们最开始接触的注入方式测试注入点首先在注入的时候都需要先测试一下注入点?id=1'o......
  • PostgreSQL查看表的大小
    PostgreSQL查看表的大小在PostgreSQL中,可以使用一系列函数和系统视图来查看表的大小。这些工具可以帮助您获取表的基本存储大小、包括索引和TOAST的总大小等信息。下列方法演示了如何获取这些信息。使用函数查看表的大小pg_relation_size():返回表的基础存储大小(不包......
  • mysql数据库名带下划线等特殊字符时,分权限报错
    原文链接:mysql数据库名带下划线分权限报错_mob64ca12f24f3a的技术博客_51CTO博客 MySQL数据库名带下划线分权限报错解析在使用MySQL进行数据库操作时,我们经常会遇到数据库名带下划线导致权限报错的情况。这是因为MySQL对于数据库名中的下划线有特殊的处理机制,容易导致权限控制......