Alcune delle mie proprietà modello sono contrassegnate con l'attributo AllowHtml. Esiste un modo per applicare automaticamente la protezione AntiXss (cioè filtro solo i tag consentiti) a questi campi?protezione AntiXSS Html proprietà modello
risposta
Non c'è modo automatico. Il più vicino che puoi fare è ottenere il pacchetto AntiXss Nuget. Quindi è possibile utilizzarlo come di seguito nel controller:
Microsoft.Security.Application.Sanitizer.GetSafeHtml("YourHtml");
O
Microsoft.Security.Application.Encoder.HtmlEncode("YourHtml");
Se si utilizza è possibile decodificare usando
Server.HtmlDecode("HtmlEncodedString");
Spero che questo aiuti.
In primo luogo, afaik, niente è incorporato per questo. Ma MVC permette di fare queste cose in modo semplice via ModelBinders personalizzati, è possibile definire il vostro
public class CustomAntiXssAttribute : Attribute { }
e decorare le vostre proprietà con esso (e anche ereditare da AllowHtmlAttribute
se lo si desidera). Poi, con un modello di legante si potrebbe aggiungere la tua protezione specifica anti-XSS:
public class CutstomModelBinder : DefaultModelBinder
{
protected override void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, System.ComponentModel.PropertyDescriptor propertyDescriptor)
{
if (propertyDescriptor.Attributes.OfType<CustomAntiXssAttribute>().Any())
{
var valueResult = bindingContext.ValueProvider.GetValue(propertyDescriptor.Name);
var filteredValue = SOME_CUSTOM_FILTER_FUNCTION_HERE(valueResult.AttemptedValue);
propertyDescriptor.SetValue(bindingContext.Model, filteredValue);
}
else // revert to the default behavior.
{
base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
}
}
}
Poi dentro che SOME_CUSTOM_FILTER_FUNCTION_HERE
si potrebbe usare quello @Yogiraj suggerito, o utilizzare un Regexp, o anche applicare il filtro basato-HtmlAgilityPack.
P.S. Non dimenticate di aggiungere ModelBinders.Binders.DefaultBinder = new CutstomModelBinder();
a Application_Start (ho dimenticato :))
codice non testato,
public class ADefaultModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if (bindingContext.ModelMetadata.RequestValidationEnabled)
{
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName).AttemptedValue;
value = value.Replace("&", "");// replace existing & from the value
var encodedValue = Microsoft.Security.Application.Encoder.HtmlEncode(value);
bindingContext.ModelMetadata.RequestValidationEnabled = encodedValue.Contains("&"); // Whether AntiXss encoded a char to &..
}
return base.BindModel(controllerContext, bindingContext);
}
}
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
ModelBinders.Binders.DefaultBinder = new ADefaultModelBinder();
vorrei andare per la sostituzione di quelli AllowHtml
attributi con RegularExpression
convalide dei dati di annotazione. Il vantaggio è che in questo modo è possibile intercettare l'errore e mostrare all'utente ciò che è andato storto mentre il precedente genera l'errore a livello globale.
Per es.
public class MyViewModel
{
[DataType(DataType.MultilineText)]
[RegularExpression(@"^[^\<\>]*$", ErrorMessage = "May not contain <,>")]
public string Text { get; set; }
}
- 1. Alternativa Microsoft AntiXSS
- 2. Pagina statica html con autorizzazione (protezione password)?
- 3. HTML: attributi e proprietà
- 4. html proprietà dell'editor
- 5. Ottimizzazione html/modello Composizione
- 6. Controllo proprietà modello
- 7. Editor HTML Eclipse per file modello HTML
- 8. Protezione XSS HTML modificabile dall'utente (simile a tumblr)
- 9. Protezione di una password in un file di proprietà
- 10. non può vincolare da-spostare in una protezione modello
- 11. Protezione/Protezione del codice in JavaScript
- 12. Delphi 7 TIdFTP Protezione FTP (protezione password)
- 13. Stampa HTML in modello Scala
- 14. Il modello HTML non esiste
- 15. Associazione modello con proprietà allegate
- 16. Protezione CSRF nell'applicazione Web
- 17. stampare il modello appengine l'ID entità nel modello HTML
- 18. Le proprietà del modello possono essere visualizzate in un modello
- 19. Protezione dall'iniezione SQL in ColdFusion
- 20. proprietà nascoste del pulsante in html
- 21. Mostra proprietà che include tag html
- 22. Rails link_to con fa_icon e html proprietà
- 23. Significato dell'attributo di proprietà in html
- 24. Utilizzando HTML come proprietà CSS Valori
- 25. Protezione licenze applicazioni vs Protezione copia in Android
- 26. C# Protezione basata sui ruoli
- 27. Django JSON Protezione da serializzazione
- 28. Conversione di modello HTML in Drupal 7
- 29. mailchimp 3.0 Ottieni modello in formato html
- 30. Genera stringa HTML da stringa modello AngularJS
NON può ereditare da ALLOWHTMLATTRIBUTE "E 'una classe chiusa" – VJAI