2010-11-22 23 views
7

如何使用Html.TextAreaForwithout编码它? 我知道这是一个安全风险,但我有一个单独的类,可以清理任何文本。ASP.NET MVC3,Html.TextAreaFor无编码?

实施例:

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

我打算与TinyMCE的使用它。

问候 乌鸦

UPDATE 我使用新的Razor视图引擎。

回答

9

您需要推出自己的:

<textarea cols="100" id="PostBodyText" name="PostBodyText" rows="10"> 
    @MvcHtmlString.Create(Model.PostBodyText) 
</textarea> 

当然在安全性方面,这可能是因为你的网站很危险的,现在容易受到XSS攻击。所以问题是为什么要有一个单独的类来清理所有的文本,当你可以简单地依靠HTML助手为你完成这项工作时?

+0

谢谢....会有upvoted你,但我是新来的网站:) – RaVen 2010-11-22 12:45:58

+0

@RVVEN,没问题,当你问问题和接受答案,你获得声誉。 – 2010-11-22 12:51:10

+0

是的,我知道,但我正在筛选出任何JavaScript标记...我只允许一些安全的html标记。但是,TinyMCE可能会导致安全漏洞。再次非常感谢。 :) – RaVen 2010-11-22 12:54:47

1

作为替代选项,您可能想使用ValidateInput,如here所述。 MVC风格的例子是:

[ValidateInput(false)] 
public ActionResult Method(){ 
    return View() 
} 

[ValidateInput(false)] 
[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Method(){ 
    // your stuff here 
    RedirectToAction("index"); // or something 
} 

我认为这是更多的MVC方式。现在您的控制器告诉您,该控制器方法存在安全问题。您的视图可以是任何使用html助手等的普通视图。请注意,这会启用各种输入,而不是过滤。 它将使用TinyMCE,但

//编辑

woops我看你需要添加

<httpRuntime requestValidationMode="2.0"/> 

在MVC的新版本webconfig为好。猜猜它可能不是要走的路。

+0

这是完全正确的。 [ValidateInput(false)]将允许HTML在您的表单中发布。 – 2016-06-22 20:49:12