1 of 19

ASP.NET Security

by Nikola Majcen

2 of 19

Sadržaj

SQL Injection

Parameter Tampering

Information Leakage

Cross-Site Request Forgery

Cross-Site Scripting

Zaštita podataka

Denial od Service

ASP.NET Identity

3 of 19

O ASP.NET-u

Microsoftov razvojni okvir za �web aplikacije

Mogućnosti izrade:

WebForms

MVC

WebAPI itd.

4 of 19

SQL Injection

Umetanje SQL koda u web app

Dohvat podataka

Modifikacija podataka

Brisanje podataka

Video prikaz

5 of 19

SQL Injection

Parametrizirani upit

(direktno ili kao stored procedure)

  • Audit (za stored procedures)

Sigurniji od prethodnog primjera

Video prikaz

6 of 19

SQL Injection

Upotreba ORM-a (Entity Framework)

Najsigurniji način koji u pozadini koristi parametrizirane upite

Video prikaz

7 of 19

Parameter Tampering

Modifikacija parametara

  • Dovodi do promjene podataka
  • Mogućnost štete

Video prikaz

Rješenja:

  • Mvc Security Extensions
  • Provjera korisnika (autorizacija)
  • Provjera modela

  • Upotreba Regexa -> SQL Injection
  • Validacija unosa

8 of 19

Information Leakage

Nenamjerno odavanje informacija o �sustavu ili o greškama u sustavu

  • Moguće prikazati detalje o:
    • tablicama u bazi podataka
    • klasama
    • modelima
    • itd.

9 of 19

Information Leakage

Prevencija:

  1. Uključivanje stranice s greškom

<customErrors mode="On"/>

  • Promjena zaglavlja
    1. Prikazivanje samo potrebnih informacija

Response.Headers.Set("Ime servera","Opis servera");� Response.Headers.Remove("X-AspNet-Version");� Response.Headers.Remove("X-AspNetMvc-Version");�

  1. Isključivanje tracing-a

<trace enabled="false"/>�

  • Promjena načina kompajliranja (debug u release)
  • Sve u jednom :)

<deployment retail="true" />

10 of 19

Cross-Site Request Forgery

GET metoda za brisanje korisnika�(BAD IDEA!)

Video primjer

POST metoda za brisanje korisnika?�(BETTER BUT NOT GOOD ENOUGH)

Video primjer (XSS)

11 of 19

Cross-Site Request Forgery

Prevencija:

Upotreba AntiForgeryToken-a

  • Rješava problem CSRF-a u potpunosti

Potrebno je:

  • Iznad metode staviti: [ValidateAntiForgeryToken]
  • Unutar forme: @Html.AntiForgeryToken();

Kako funkcionira:

  • Klijent zahtjeva HTML s određenom formom
  • Server zahtjevu dodaje dva tokena (cookie + hidden)
  • Kada klijent šalje formu natrag, mora poslati ista ta dva tokena
  • Ukoliko server ne dobije oba tokena, odbija zahtjev

12 of 19

Cross-Site Scripting

Napad injektiranja programskog koda u web aplikaciju

�Vrste:

  • Persistent XSS
  • Reflected XSS
  • DOM based XSS

Automatska prevencija od strane ASP.NET-a:

  • Korištenje ValidationRequest-a

Video primjer

13 of 19

Cross-Site Scripting

Načini prevencije:

  • ValidateRequest
    • Ukoliko ima potrebe za korištenjem HTML-a:
      • [AllowHtml] za property
      • [ValidateInput(false)] za metodu
  • AntiXss biblioteka
    • Ugrađene metode za dohvaćanje podataka iz HTML-a i JSON-a
  • HtmlEncode (suprotno od AntiXss-a) - blacklist
  • Json.Encode();
  • Security Policies

// Chrome & Safari� Response.AddHeader("X-WebKit-CSP", "default-src 'self'");�

// Firefox� Response.AddHeader("X-Content-Security-Policy", "default-src 'self'");

  • Validacije korisničkog unosa -> Regex

14 of 19

Zaštita podataka

SSL

  • kriptirana komunikacija
  • korištenje transportnoj sloga
  • potreban certifikat

Properties -> Enable SSL (port 44300)

<ImeProjekta>.csproj -> Promjena porta:

<IISExpressSSLPort>443</IISExpressSSLPort>

Zaštita lozinke

  • Hashiranje lozinki (Identity)
  • Klasa ApplicationUserManager

Zaštita baze podataka

  • EncryptByPassphrase
  • EncryptByKey
  • EncryptByCertificate

15 of 19

Denial of Service

Čini resurs ili uslugu nedostupnom

  • Veliki broj zahtjeva
  • Server ih ne može obraditi

Rješenje na strani servera:

  • Dynamic IP Restrictions (blokiranje IP-a)

16 of 19

ASP.NET Identity

Novi Microsoftov membership sustav

Koristi se za sve (MVC, WebForms, WebApi…)

Razne mogućnosti :)

Funkcionalnosti:

  • Jednostavno praćenje korisničkih informacija
    • Unaprijed definirane tablice, klase i konvencije
  • Role provider
  • Claims
  • Social login provider
  • OWIN (middleware autentifikacija)

17 of 19

ASP.NET Identity

Unaprijed definirane klase i�tablice za osnovnu infrastrukturu

Omogućene opcije za:

  • social login (OAuth)
  • dvofaktorsku auth
  • potvrdu računa
  • resetiranje lozinki itd.

Vrlo lako promjenjivo :)

18 of 19

Literatura

19 of 19

Hvala na pažnji