ValidateInput e AllowHTML sono collegati direttamente con XSS problemi di sicurezza.
Quindi proviamo prima a capire XSS.
XSS (cross-site scripting) è un attacco di sicurezza in cui l'utente malintenzionato inietta codice dannoso durante l'immissione dei dati. Ora la buona notizia è che XSS è di default prevenuto in MVC. Quindi, se qualcuno cerca di pubblicare codice JavaScript o HTML, atterra con l'errore seguente.

Ma in tempo reale ci sono scenari in cui HTML è di poter, come editor HTML. Quindi per quel tipo di scenari puoi decorare la tua azione con l'attributo seguente.
[ValidateInput(false)]
public ActionResult PostProduct(Product obj)
{
return View(obj);
}
Ma aspetta, c'è un problema qui. Il problema è che abbiamo consentito all'HTML di compiere un'azione completa che può essere pericolosa. Quindi, se possiamo avere un controllo più granulare sul campo o sul livello di proprietà, creeremmo davvero una soluzione pulita, ordinata e professionale.
Ecco dove AllowHTML è utile. Puoi vedere nel codice seguente che ho decorato "AllowHTML" sul livello di proprietà della classe del prodotto.
public class Product
{
public string ProductName { get; set; }
[AllowHtml]
public string ProductDescription { get; set; }
}
Quindi riassumendo “ValidateInput” consente agli script e HTML per essere pubblicato sul livello di azione, mentre “AllowHTML” è su un livello più granulare.
Si consiglia di utilizzare "AllowHTML" di più finché non si è certi che l'intera azione debba essere nuda.
Si consiglia di leggere il post del blog Preventing XSS Attacks in ASP.NET MVC using ValidateInput and AllowHTML che dimostra passo dopo passo l'importanza di questi due attributi con un esempio.
fonte
2015-05-29 06:09:32
bello vederti qui signore. Molti dei tuoi post sono stati utili per me sul progetto di codice. –
Nel tuo esempio, se un utente dovesse inserire html nel campo 'ProductName', l'errore verrebbe comunque presentato (come previsto). C'è un modo per presentare un messaggio di errore più user-friendly. Questo errore sembra ignorare la configurazione dell'errore personalizzato. – philreed