Codificación y decodificación de cookies para eludir las reglas WAF

programación


Hola,

Tengo una aplicación web .net 6 con autenticación de anuncios en Azure. La aplicación está rodeada por una puerta de enlace de aplicaciones azul. Las reglas WAF de la puerta de enlace se están bloqueando y devuelven un error 403 de la puerta de enlace.

Causa raíz: La autenticación web de Microsoft Identity genera cookies que tienen caracteres especiales como guión doble (–), la expresión regular WAF las considera como comentarios SQL y está bloqueando esa solicitud.

Lo que he probado:

Intenté escribir middleware personalizado para codificar y decodificar las cookies, pero no funciona.

Tampoco puedo entender el flujo, ya que el concepto no me queda claro, como si estuviera decodificando y codificando las cookies en el código del servidor en el middleware, pero cuando un usuario envía una solicitud a la aplicación web, aparecerá inicialmente. a la puerta de enlace y allí será bloqueado por la puerta de enlace. No estoy seguro de cómo puede funcionar este tipo de solución.

Comparta sus sugerencias si se ha enfrentado a este problema además de bloquear las reglas en la puerta de enlace de la aplicación. O cómo se resolverá realmente.

Solución 1

Solución 2

Este no es en absoluto mi campo de especialización ni siquiera cerca de él… Sin embargo, encontré la pregunta interesante y comencé a buscar en Google y, sí, lo sé, algunos consejos de IA.

Parece que su middleware personalizado para codificar y decodificar cookies está implementado correctamente
Parece que debe asegurarse de que todos los encabezados agregados durante la codificación/decodificación se incluyan en las solicitudes salientes.
Asegúrese de que su Azure Application Gateway no sea demasiado restrictivo y considere ajustar las reglas WAF si es necesario. Vi el comentario de que no tiene control sobre esto, solo verifique y confirme el estado.

Para manejar ‘CustomMiddleware’ en .NET, instale los paquetes necesarios (la IA se activa, aquí no se ofrecen garantías, pero ayuda como indicador en la dirección correcta…) –

Intento
dotnet add package Microsoft.AspNetCore.Authentication
dotnet add package Microsoft.AspNetCore.Authentication.Cookies

Resto aquí copiado y pegado usando C3…-

C#
// CustomMiddleware.cs
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Http;
using System.Threading.Tasks;

public class CustomMiddleware
{
    private readonly RequestDelegate _next;

    public CustomMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext context)
    {
        // Decode or encode your cookies here
        // For example, decoding:
        // var decodedCookie = context.Request.Cookies["YourCookieName"];
        // var decodedValue = DecodeYourCookie(decodedCookie);
        
        // Encoding example:
        // var encodedValue = EncodeYourCookie(originalValue);
        // context.Response.Cookies.Append("YourCookieName", encodedValue);

        // Call the next delegate/middleware in the pipeline
        await _next(context);
    }
}

Registre el middleware en su ‘Startup.cs’ –

C#
// Startup.cs
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

public class Startup
{
    // Other configurations...

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // Other middleware configurations...

        app.UseMiddleware<CustomMiddleware>();

        // Other middleware configurations...
    }
}

Nuevamente, las partes relacionadas con el código se generan con IA, es posible que no estén completamente sincronizadas con lo que desea lograr, pero sirve como indicador…

Solución 3

コメント

タイトルとURLをコピーしました