7

我正在通过NerdDinner工作,我对以下部分有点困惑......

首先,他们添加了一个用于创建新晚餐的表单,其中包含一堆文本框,如下所示:

<%= Html.TextArea("Description") %>

然后他们展示了两种将表单输入绑定到模型的方法:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create() {
    Dinner dinner = new Dinner();
    UpdateModel(dinner);
    ...
}

或者:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Dinner dinner) { ... }

好的,太好了,到目前为止,这一切看起来都很容易。

过了一会儿,他们说:

在接受任何用户输入时始终对安全性保持偏执是很重要的,在将对象绑定到表单输入时也是如此。您应该注意始终对任何用户输入的值进行 HTML 编码,以避免 HTML 和 JavaScript 注入攻击

嗯?MVC 正在为我们管理数据绑定。您应该在哪里/如何进行 HTML 编码?

4

1 回答 1

3

您通常(但并非总是)希望在写出值之前对值进行 HTML 编码,通常在您的视图中,但也可能来自控制器。

这里的一些信息:http ://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and- asp-net-mvc-2.aspx

于 2010-05-25T17:10:46.113 回答