2010-05-25 13 views
6

sto lavorando attraverso NerdDinner e io sono un po 'confuso circa la seguente sezione ...codifica Html in ingresso MVC

Prima hanno aggiunto un modulo per la creazione di una nuova cena, con un gruppo di caselle di testo delcared come:

<%= Html.TextArea("Description") %>

Essi mostrano quindi due modi di legame ingresso forma al modello:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Create() { 
    Dinner dinner = new Dinner(); 
    UpdateModel(dinner); 
    ... 
} 

o:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Create(Dinner dinner) { ... } 

Ok, fantastico, tutto sembra davvero facile finora.

Poi un po 'più tardi dicono:

E' importante essere sempre paranoici sulla sicurezza quando accettare qualsiasi input dell'utente, e questo è vero anche quando oggetti vincolanti per formare ingresso. Si dovrebbe fare attenzione a sempre HTML codificare i valori immessi dall'utente per evitare di HTML e JavaScript iniezione attacchi

Eh? MVC gestisce i dati vincolanti per noi. Dove/come si dovrebbe fare la codifica HTML?

risposta

2

Generalmente (ma non sempre) si desidera codificare in HTML i valori prima di scriverli, in genere nelle visualizzazioni, ma probabilmente anche dal controller.

Alcune informazioni qui: http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and-asp-net-mvc-2.aspx

+0

in modo che non importa quello che ho consentire all'utente di inserire nella forma, fino a quando io non l'uscita di nuovo senza codifica? Non so davvero come funzioni l'iniezione HTML. – fearofawhackplanet

+1

Sì. Esistono molti tipi di attacchi di cross-site scripting, ma un semplice controllo sul proprio sito è provare ad inserire l'avviso '' ovunque l'utente possa inserire i dati (incluso quando crea il proprio nome utente). Se vedi il popup di avviso (supponendo che tu abbia attivato il javascript), avrai trovato un posto che richiede la codifica HTML. È preferibile codificare HTML ** all ** output e rimuovere solo tale codifica quando necessario. – RedFilter

+0

ok grazie orbman – fearofawhackplanet