Solución:
La regla general es la siguiente:
- Almacene en su base de datos el HTML RAW sin codificaciones ni desinfecciones. A un servidor SQL no le importa si almacena alguna cadena que contenga código XSS.
- Al mostrar esta salida en su página, asegúrese de que esté desinfectada.
Entonces:
[HttpPost, ActionName("Create")]
[ValidateAntiForgeryToken]
public ActionResult Create(Post model)
{
// store model.Data directly in your database without any cleaning or sanitizing
}
y luego al mostrar:
@Html.Raw(HtmlUtility.SanitizeHtml(Model.Data))
Observe cómo utilicé el ayudante Html.Raw aquí para asegurarme de que no obtenga una salida codificada en HTML doble. los HtmlUtility.SanitizeHtml
La función ya debería encargarse de desinfectar el valor y devolver una cadena segura que podría mostrar en su vista y no se codificará más. Si por otro lado usaste @HtmlUtility.SanitizeHtml(Model.Data)
, entonces el @
La función razor codificaría HTML el resultado de la SanitizeHtml
función que podría no ser la que está buscando.
Para framework 4.5, usando MVC 5, use @ Html.Raw (WebUtility.HtmlDecode (item.ADITIONAL_INFORMAtION))
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)