2010-11-22 23 views
7

¿Cómo puedo usar el Html.TextAreaFor sin codificarlo? Sé que es un riesgo para la seguridad, pero tengo una clase aparte que desinfecta cualquier texto.ASP.NET MVC3, Html.TextAreaPara sin codificación?

Ejemplo:

@ Html.TextAreaFor (modelo => model.PostBodyText, 10, 100, 1)

Estoy planeando utilizarlo con TinyMCE.

Saludos RaVen

ACTUALIZACIÓN estoy usando la nueva maquinilla de afeitar Ver motor.

Respuesta

9

Usted 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 que esto podría ser muy peligroso, ya que su sitio ahora es vulnerable a ataques XSS. Entonces, la pregunta es ¿por qué tener una clase separada que desinfecte todo el texto cuando simplemente puedes confiar en los ayudantes de HTML para que hagan el trabajo por ti?

+0

Gracias .... Le habría votado pero soy nuevo en el sitio :) – RaVen

+0

@RaVen, no hay problema, cuando hace preguntas y acepta respuestas gana reputación. –

+0

Sí, lo sé, pero estoy filtrando las etiquetas de JavaScript ... Solo permito algunas etiquetas html seguras. Pero sí TinyMCE puede causar un defecto de seguridad. Nuevamente muchas gracias. :) – RaVen

1

Como una opción alternativa es posible que desee utilizar ValidateInput como se describe here. Un ejemplo en el estilo de 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 más el camino de MVC para ir. Ahora su controlador le dice que hay un problema de seguridad en ese método de controlador. Su vista puede ser cualquier vista normal usando html helpers, etc. Tenga en cuenta que esto permite todo tipo de entrada, no filtrada. Funcionará con TinyMCE aunque.

// editar

woops que veo es necesario agregar

<httpRuntime requestValidationMode="2.0"/> 

a WEBconfig, así como en las nuevas versiones de MVC. Supongo que podría no ser el camino a seguir.

+0

Esto es exactamente correcto. [ValidateInput (false)] permitirá que HTML se publique en su formulario. –

Cuestiones relacionadas