Encodage et décodage des cookies pour contourner les règles WAF

la programmation


Salut,

J’ai une application Web .net 6, avec une authentification publicitaire Azure. L’application est entourée d’Azure Application Gateway. Les règles de la passerelle WAF sont bloquées et renvoient une erreur 403 depuis la passerelle.

Cause première : l’authentification Web Microsoft Identity générant des cookies ayant un caractère spécial comme un double trait d’union (–), l’expression régulière WAF les considérant comme un commentaire SQL et bloque cette demande.

Ce que j’ai essayé :

J’ai essayé d’écrire un middleware personnalisé pour encoder et décoder les cookies, mais cela ne fonctionne pas.

Je ne suis pas non plus en mesure de comprendre le flux, car le concept n’est pas clair pour moi, comme si je décodais et codais les cookies dans le code du serveur dans un middleware, mais lorsqu’un utilisateur envoie une demande à une application Web, son initiale viendra. à la passerelle et là, il sera bloqué par la passerelle. Je ne sais pas comment ce type de solution peut fonctionner.

Veuillez partager vos suggestions si vous avez rencontré ce problème en dehors des règles de blocage dans la passerelle d’application. Ou comment cela sera réellement résolu

Solution 1

Solution 2

Ce n’est pas du tout mon domaine d’expertise ou même à proximité…, j’ai cependant trouvé la question intéressante et j’ai commencé quelques recherches sur Google et, oui je sais, quelques conseils en IA.

Il semble que votre middleware personnalisé d’encodage et de décodage des cookies soit correctement implémenté
Il semble que vous deviez vous assurer que tous les en-têtes ajoutés lors du codage/décodage sont inclus dans les requêtes sortantes.
Assurez-vous que votre Azure Application Gateway n’est pas trop restrictive et envisagez d’ajuster les règles WAF si nécessaire. J’ai vu le commentaire selon lequel vous n’avez aucun contrôle sur cela, vérifiez et confirmez simplement l’état.

Pour gérer ‘CustomMiddleware’ dans .NET, installez les packages nécessaires (l’IA démarre, aucune garantie donnée ici mais aide comme pointeur dans la bonne direction…) –

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

Reste ici copié et collé en utilisant 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);
    }
}

Enregistrez le middleware dans votre ‘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...
    }
}

Agian, les parties liées au code sont générées par l’IA, elles peuvent être complètement désynchronisées par rapport à ce que vous voulez réaliser, mais vous aider comme pointeur…

Solution 3

コメント

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