Sigurnost, Middleware i EF Core (Pipeline)

Modul 9 - Lekcija 2

Arhitektura modernog Web-a: Pipeline cijev za obradu HTTP Requests Autentifikacije/Autorizacije i Anti-SQLi baze

⏱️ Trajanje: ~3 časa | 📚 Nivo: Srednji/Napredni | 🎯 Praktični primjeri: 5

📖 Middleware (Žlijeb za Zahtjeve)

Middleware je klasna komponenta čiji tok "probijanju" korisnički HTTP Browser paketi koji idu prema Vašem Kontroleru sa servera.

Oni čine strogo kontrolisani redoslijed tunelskih procedura ("Pipeline" ili cijev). Svaki sloj tog tunela propušta signal dalje - Ili ga vraća i Odbija unazad nazad u Browser Short-Circuit spajajući se direkt na klijenta!

HTTP Request Greške Auth (Ko si ti?) Authorizacija (Imaš Dozvolu?) MVC Controller HTTP Response

⚠️ Kritično: Kodiranje Pipeline Zida

Poredak je KRITIČAN Pojas

Zahtjev (Request) mora da bude skeniran (Ko si ti? To je Autentifikacija) da bi poslije ikako mogao provjeravati tvoja administratorska prava kroz (Autorizaciju).

Zamjena ovih linija u redoslijedu Program.cs fajla bi blokirala i srušila prijavu svima na sistem jer bi kontrola pitala "Ko je to?" prije nego uopće stigne identifikacioni proces validacije!

// Program.cs
app.UseRouting(); // Da Aplikacije prepozna URL mapiranje

// ====== UVIJEK NEPRIKOSNOVENI SIGURNOSNI CEMENT ========== //
// NAKON Routinga ali PRIJE Controller Endpointsa MAP!
app.UseAuthentication(); // 1. CITANJE COOKIJA (Ima li te?)
app.UseAuthorization();  // 2. Dozvolu imas?? Da/Ne

app.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}");

🕵️‍♂️ Sigurna Autentifikaciona Registracija (Builder.cs)

Ukoliko se koristi klasični Web Browser i Cookie metod prijava umjesto JWT Tokenizacija konfiguracioni dio prije app.Build() treba da izgleda:

// DODAVANJE AUTENTIFKACIJSKOG SERVISA (Iznad Use() Linija)
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(options =>
    {
        options.LoginPath = "/Account/Login"; // Ako udari neovlasen vrati ga amo na Ekran 
        options.AccessDeniedPath = "/Account/AccessDenied"; // Ako je pogresan level prebaci vamo
        options.ExpireTimeSpan = TimeSpan.FromMinutes(30); 
        
        options.Cookie.HttpOnly = true; // ZASTITA OD KRADJE Javascriptom (XSS kradje Cookija) !!!
        options.Cookie.SecurePolicy = CookieSecurePolicy.Always; // Cookie se ne posmatra bez zelenog Katanca(HTTPS)!!
    });

💾 EF Core - Ultimativna SQL Zaštita

EF Core po svojoj generalnoj građi donosi imunizaciju i zastitu vasih baza podataka protiv ozloglasenog Hakerskoj napada sa unosom Komandi na text Inputima poznatim pod nazivom (SQL injection!).

Napad Konkatanacijom na oldschool naćin

Unese li Haker u search polje "Pojam; DROP TABLE Korisnici;--"

string sql = "SELECT * FROM Ustanova WHERE Ime = " + searchBoxUnos; // DIREKTNO CITA PAD SISTEMA

EF Core Parametrizacija SQL Servera - SIGURNOSNO SPAŠEN

// EF Core prevodi ovo u parametrized SQL, zlonamjerni tekst ostaje samo "doslovni tekst" bez mogucnosti komadnog unosa.
var employee = db.Employees.FirstOrDefault(e => e.Jmbg == userInput);

🛠️ Custom "Audit" Middleware

Za sisteme poput Javne Uprave, obavezni su Log Tragovi (ko i kada je usao). Nije potrebno to pisati u hiljadu Action Kontrolerskih metoda nego Odsjecite samo jedan sloj "Custom Middleware" ispred svega, nakon Authentication modula!

app.UseAuthentication(); 
app.UseAuthorization(); 

// --- CUSTOM AUDIT MIDDLEWARE ZA JAVNU UPRAVU ---
// Svaki moguci posjetilac prolazi okom ove metode:
app.Use(async (context, next) =>
{
    var koJeDosaoIme = context.User.Identity.IsAuthenticated ? context.User.Identity.Name : "AnonimniX";
    
    // Spremate u neki LOG file / bazu ovo ispod zapisano
    Console.WriteLine($"Pristup: {koJeDosaoIme} na Adresni Trak: {context.Request.Path}");
    
    await next(); // DOZVOLA S TIM - Idi dalje u zivu formu i kontrolere i nastavi put!
});

app.MapControllerRoute(...)

✅ Zaključak

  • Middleware Pipeline srce je ASP.NET Core kontrolisanja Sigurnosti. On mijenja beskonacne Web.config labirinte klasičnog .NET 4 Framevorka lakše citljivim C# Use redosljedom klasa.
  • ✅ Pravilan i strog redosljed između Authentication -> Authorization presudno diktira validnu bezbjednost na rješenju i sistemu.
  • ✅ Siguronosna konfiguracija Cookija za zabranu HttpOnl i forsiranje HTTPS iskljucit ce i obeshrabriti klasicne snifere Network mrežnog pregovaranja klijenata i servera vasih preduzeča.