asp.net-mvc - route - tag helpers asp net core
Escritura/salida de cadenas HTML sin escaparse (6)
A veces puede ser difícil usar html en bruto. Sobre todo debido a la vulnerabilidad de XSS. Si eso es una preocupación, pero aún desea usar html en bruto, puede codificar las partes que dan miedo.
@Html.Raw("(<b>" + Html.Encode("<script>console.log(''insert'')</script>" + "Hello") + "</b>)")
Resultados en
(<b><script>console.log(''insert'')</script>Hello</b>)
He guardado HTML seguro / saneado en una tabla de base de datos.
¿Cómo puedo tener este contenido HTML escrito en una vista de Razor?
Siempre escapa a caracteres como <
y ampersands to &
.
Además de usar @MvcHtmlString.Create(ViewBag.Stuff)
como lo sugiere Dommer, le sugiero que también use la biblioteca AntiXSS como se sugiere phill http://haacked.com/archive/2010/04/06/using-antixss-as-the-default-encoder-for-asp-net.aspx
Codifica casi toda la posible cadena de ataque XSS.
En ASP.NET MVC 3 deberías hacer algo como esto:
// Say you have a bit of HTML like this in your controller:
ViewBag.Stuff = "<li>Menu</li>"
// Then you can do this in your view:
@MvcHtmlString.Create(ViewBag.Stuff)
Puedes poner tu cadena en viewdata en el controlador de esta manera:
ViewData["string"] = DBstring;
Y luego llame a ese viewdata en vista de esta manera:
@Html.Raw(ViewData["string"].ToString())
Puedes usar
@{ WriteLiteral("html string"); }
Suponiendo que su contenido está dentro de una cadena llamada mystring
...
Puedes usar:
@Html.Raw(mystring)
Alternativamente, puede convertir su cadena a HtmlString
o cualquier otro tipo que implemente IHtmlString
en el modelo o directamente en línea y use @
regular:
@{ var myHtmlString = new HtmlString(mystring);}
@myHtmlString