2010-11-22 28 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