如何使用Html.TextAreaForwithout编码它? 我知道这是一个安全风险,但我有一个单独的类,可以清理任何文本。ASP.NET MVC3,Html.TextAreaFor无编码?
实施例:
@ Html.TextAreaFor(型号=> model.PostBodyText,10,100,1)
我打算与TinyMCE的使用它。
问候 乌鸦
UPDATE 我使用新的Razor视图引擎。
如何使用Html.TextAreaForwithout编码它? 我知道这是一个安全风险,但我有一个单独的类,可以清理任何文本。ASP.NET MVC3,Html.TextAreaFor无编码?
实施例:
@ Html.TextAreaFor(型号=> model.PostBodyText,10,100,1)
我打算与TinyMCE的使用它。
问候 乌鸦
UPDATE 我使用新的Razor视图引擎。
您需要推出自己的:
<textarea cols="100" id="PostBodyText" name="PostBodyText" rows="10">
@MvcHtmlString.Create(Model.PostBodyText)
</textarea>
当然在安全性方面,这可能是因为你的网站很危险的,现在容易受到XSS攻击。所以问题是为什么要有一个单独的类来清理所有的文本,当你可以简单地依靠HTML助手为你完成这项工作时?
作为替代选项,您可能想使用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为好。猜猜它可能不是要走的路。
这是完全正确的。 [ValidateInput(false)]将允许HTML在您的表单中发布。 – 2016-06-22 20:49:12
在模型属性上使用[AllowHtml]
。正如我在In ASP.NET MVC 3, how do I get at the model using Razor Syntax in a Create() View?中所了解的。
谢谢....会有upvoted你,但我是新来的网站:) – RaVen 2010-11-22 12:45:58
@RVVEN,没问题,当你问问题和接受答案,你获得声誉。 – 2010-11-22 12:51:10
是的,我知道,但我正在筛选出任何JavaScript标记...我只允许一些安全的html标记。但是,TinyMCE可能会导致安全漏洞。再次非常感谢。 :) – RaVen 2010-11-22 12:54:47