Securitatea in aplicatiile web

Post on 24-Feb-2016

55 views 0 download

description

Securitatea in aplicatiile web. Bogdan Brinzarea- Iamandi Banca Romaneasca. Agenda. Securitatea in lumea de azi Mituri Injectare SQL XSS CSRF Fortare JSON Unelte ajutatoare. Securitatea in lumea de azi. Care este miza ?. Top 10 riscuri. - PowerPoint PPT Presentation

Transcript of Securitatea in aplicatiile web

Securitatea in aplicatiile webBogdan Brinzarea-IamandiBanca Romaneasca

Agenda• Securitatea in lumea de azi• Mituri• Injectare SQL• XSS• CSRF• Fortare JSON• Unelte ajutatoare

SECURITATEA IN LUMEA DE AZI

Care este miza?

Bani

Date

Reputatie

Top 10 riscuriOpen Web Application Security Project (OWASP)

MITURI

SSL (Secure Socket Layer)• Daca folosesc SSL sunt protejat!• FALS: Atacurile se pot intampla la fel si

peste SSL!

Firewall• Daca folosesc un firewall sunt protejat!• FALS: Firewall-ul protejeaza accesul web la

site si nu protejeaza aplicatia de atacuri rau-intentionate

Dezvoltatori• Securitatea aplicatiei este problema

dezvoltatorilor!• FALS: Mai multi factori care nu tin de

dezvoltatori influenteaza securitatea aplicatiei!

INJECTARE SQLSQL Injection

Injectare SQL - Definitie• Atac prin care date nevalidate ajung sa faca

parte dintr-o comanda sau query• Impact

– Se obtine acces cu roluri necuvenite– Se obtin date sensibile– Se distrug date sensibile

Injectare SQL - ScenariuAcces

neautorizat

Preluare date sensibile

Acordare drepturi

necuvenite

Injectare SQL - Scenariu

Sursa: http://xkcd.com/327/

Injectare SQL – Solutii• Folosirea query-urilor dinamice doar cu

parametri SQL siguri• Proceduri stocate• Eliminarea caracterelor speciale • Validarea datelor de input• Folosirea listelor albe si nu a celor negre

Injectare SQL - Solutii• Protejarea datelor sensibile prin criptare• Eliminarea erorilor SQL explicite din output• Limitarea informatiilor despre baza de date• Folosirea de conturi cu drepturi limitate• Folosirea librariei AntiXSS

(http://antixss.codeplex.com)

XSSCross-Site Scripting

XSS - Definitie• Atac prin care o aplicatie preia date si le

trimite catre browser fara o validare si o encodare corecta

• Permite executia de scripturi rau intentionate pe browserul clientului

• 2 tipuri– Reflectat – scriptul este inclus in cerere si este

reflectat in pagina– Persistat – scriptul este inclus in cerere, este

salvat si apoi afisat in pagini ulterioare

XSS – Scenariu reflectat

XSS – Scenariu reflectat

XSS – Scenariu reflectat

XSS – Scenariu persistat

XSS - Solutii• Folosirea encodarii outputului HTML

XSS - Solutii• Nu numai HTML-ul trebuie validat!• Encodare atribute tag-urilor • Encodare atribute de tip URL

• Validarea CSS-ului cu expresii regulate• Encodare JavaScript

XSS – Solutii• Validarea datelor pe client cat si pe server

Machine.config

Web.config

XSS - Solutii• Validarea in MVC se face la nivel de

controller

XSS - Solutii• Folosirea librariei AntiXSS

(http://antixss.codeplex.com/)

Sursa: antixss.codeplex.com

XSS - Solutii• Phil Haack – AntiXssEncoder

http://haacked.com/archive/2010/04/06/using-antixss-as-the-default-encoder-for-asp-net.aspx

XSS - Solutii• Cookie HttpOnly – se previne accesarea cu document.cookie

XSS – Solutii• innerHtml trebuie folosit doar cu HMTL

encodat• innerText nu executa scripturile

CSRFCross-Site Request Forgery

CSRF - Definitie• Atac ce forteaza o victima autentificata sa

trimita o cerere HTTP falsa• Pentru ca cererea provine de la victima,

masurile de securitate traditionale sunt ocolite

CSRF - Scenariu

CSRF - Solutii• Includerea in cookie si in pagina a unui jeton

de securitate• La postarea datelor pe server se verifica

jetonul din cookie cu cel din pagina • Doar daca cele doua coincid actiunea se

efectueaza

CSRF - Solutii

FORTARE JSONJSON Hijacking

Fortare JSON - Definitie • Atac de tip CSRF care implica efectuarea de

catre victima autentificata unei cereri pentru obtinerea unor date confidentiale de tip JSON

• Un array JSON este considerat un JavaScript valid si este executat

Fortare JSON - Definitie• Urmatoarele cerinte trebuie indeplinite

– Browserul victimei suporta __defineSetter__– Serviciul JSON intoarce date confidentiale– Serviciul JSON intoarce datele la GET– Serviciul JSON intoarce datele sub forma unui

array

Fortare JSON - Scenariu

Fortare JSON - Solutii• In MVC 2, doar requesturi POST pentru

JSON• Nu trebuie luate actiuni la GET• Folosirea unui jeton de securitate

Fortare JSON – Solutii• Un JsonResult sigur care sa modifice

output-ul default de array• Ne putem inspira din AJAX-enabled WCF

Service

Fortare JSON - Solutii

System.Web.Mvc.JsonResult.cs

Unelte• URL Scan• URL Rewrite • Fiddler• IIS Log Analyzer• Log Parser 2.2

Concluzii

VA MULTUMESC!