ASP.NET MVC3,Html.TextAreaFor 没有编码?

发布于 2024-10-03 22:23:54 字数 245 浏览 2 评论 0原文

如何在不编码的情况下使用 Html.TextAreaFor? 我知道这是一个安全风险,但我有一个单独的类可以清理任何文本。

示例:

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

我计划将其与 TinyMCE 一起使用。

问候 RaVen

更新 我正在使用新的 Razor 视图引擎。

How can I use the Html.TextAreaForwithout encoding it?
I know it's a security risk but I have a separate class that sanitizes any text.

Example:

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

I'm planning to use it with TinyMCE.

Regards
RaVen

UPDATE
I'm using the new Razor View Engine.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

邮友 2024-10-10 22:23:54

您需要自己动手:

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

当然,就安全性而言,这可能非常危险,因为您的网站现在很容易受到 XSS 攻击。所以问题是,当您可以简单地依靠 HTML 帮助器来为您完成这项工作时,为什么要使用一个单独的类来清理所有文本呢?

You will need to roll your own:

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

Of course in terms of security this could be very dangerous as your site is now vulnerable to XSS attacks. So the question is why having a separate class that sanitizes all the text when you can simply rely on the HTML helpers to do the job for you?

独行侠 2024-10-10 22:23:54

作为替代选项,您可能想要使用 此处。 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 一起使用

//edit

需要在新版本的 MVC 中添加

<httpRuntime requestValidationMode="2.0"/>

woops 我发现您还 到 webconfig 中。我想这可能不是一条路。

As an alternative option you might wanna use ValidateInput as described here. An example in MVC style would be:

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

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

I think that is more the MVC way to go. Now your controller tells you there is a security issue in that controller method. Your view can be any normal view using html helpers etc. Note that this enables all sorts of input, not filtered. It will work with TinyMCE though.

//edit

woops I see you need to add

<httpRuntime requestValidationMode="2.0"/>

to webconfig as well in new versions of MVC. Guess it might not be the way to go.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文