ASP.NET MVC3, Html.TextAreaFor sin codificar?
-
27-09-2019 - |
Pregunta
¿Cómo puedo utilizar el Html.TextAreaForwithout codificarlo? Sé que es un riesgo de seguridad, pero tengo una clase separada que desinfecta cualquier texto.
Ejemplo:
@ Html.TextAreaFor (modelo => model.PostBodyText, 10, 100, 1)
Tengo la intención de usarlo con TinyMCE.
Saludos RAVEN
Actualizar Estoy usando la nueva maquinilla de afeitar Vista motor.
Solución
tendrá que rodar su propia:
<textarea cols="100" id="PostBodyText" name="PostBodyText" rows="10">
@MvcHtmlString.Create(Model.PostBodyText)
</textarea>
Por supuesto, en términos de seguridad, esto podría ser muy peligroso, ya que su sitio ahora es vulnerable a ataques XSS. Así que la pregunta es por qué tener una clase separada que desinfecta todo el texto cuando se puede confiar simplemente en los ayudantes HTML para hacer el trabajo para usted?
Otros consejos
Como opción alternativa Es posible que desee utilizar ValidateInput como se describe aquí . Un ejemplo de estilo MVC sería:
[ValidateInput(false)]
public ActionResult Method(){
return View()
}
[ValidateInput(false)]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Method(){
// your stuff here
RedirectToAction("index"); // or something
}
creo que es la forma más MVC ir. Ahora el controlador le dice que es un problema de seguridad en ese método controlador. Tu punto de vista puede ser cualquier vista normal usando html ayudantes, etc. Tenga en cuenta que esto permite todo tipo de entrada, no se filtra. Se trabajará con TinyMCE aunque .
// editar
woops veo es necesario agregar
<httpRuntime requestValidationMode="2.0"/>
a webconfig, así como en nuevas versiones de MVC. Supongo que podría no ser el camino a seguir.
Uso [AllowHtml]
en la propiedad del modelo. Como ya he aprendido en en ASP.NET MVC 3, ¿cómo consigo en el modelo usando la maquinilla de afeitar de sintaxis en un Create () Ver? .