Mengkodekan dan mendekode cookie untuk melewati aturan WAF

pemrograman


Hai,

Saya memiliki aplikasi web .net 6, yang memiliki autentikasi iklan Azure. Aplikasi dikelilingi oleh gateway aplikasi biru. Aturan Gateway WAF diblokir dan mengembalikan kesalahan 403 dari gateway.

Akar Penyebab: Otentikasi Web Identitas Microsoft menghasilkan cookie yang memiliki karakter khusus seperti tanda hubung ganda (–), regex WAF menganggapnya sebagai komentar SQL dan memblokir permintaan tersebut.

Apa yang saya coba:

Saya telah mencoba menulis middleware khusus untuk menyandikan dan mendekode cookie, tetapi tidak berhasil.

Saya juga tidak dapat memahami alurnya, karena konsepnya tidak jelas bagi saya seperti saya mendekode dan menyandikan cookie dalam kode server di perangkat tengah, tetapi ketika pengguna mengirim permintaan ke aplikasi web, permintaan pertama akan datang ke gateway dan di sana akan diblokir oleh gateway. Saya tidak yakin bagaimana solusi semacam ini bisa berhasil.

Silakan bagikan saran Anda jika Anda menghadapi masalah ini selain aturan pemblokiran di gateway aplikasi. Atau bagaimana sebenarnya hal itu akan diselesaikan

Solusi 1

Solusi 2

Ini sama sekali bukan bidang keahlian saya atau bahkan hampir di sana…, namun saya menganggap pertanyaan itu menarik dan mulai mencari di Google dan, ya saya tahu, beberapa saran AI.

Tampaknya middleware khusus Anda untuk pengkodean dan penguraian kode cookie diterapkan dengan benar
Tampaknya Anda perlu memastikan bahwa setiap header yang ditambahkan selama pengkodean/dekode disertakan dalam permintaan keluar.
Pastikan Azure Application Gateway Anda tidak terlalu membatasi, dan pertimbangkan untuk menyesuaikan aturan WAF jika perlu, saya melihat komentar bahwa Anda tidak memiliki kendali atas hal ini, cukup periksa dan konfirmasi statusnya.

Untuk menangani ‘CustomMiddleware’ di .NET, instal paket yang diperlukan (AI mulai bekerja, tidak ada jaminan yang diberikan di sini tetapi bantuan sebagai penunjuk ke arah yang benar…) –

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

Istirahat di sini disalin dan ditempel menggunakan 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);
    }
}

Daftarkan middleware di ‘Startup.cs’ Anda –

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...
    }
}

Sekali lagi, bagian terkait kode dihasilkan oleh AI, mungkin benar-benar tidak sinkron dengan apa yang ingin Anda capai tetapi membantu sebagai penunjuk…

Solusi 3

コメント

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