Securitatea in aplicatiile web
description
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!