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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top