6
我工作过NerdDinner和我有点困惑的以下部分...HTML编码
首先,他们已经增加了一个表单创建一个新的晚餐,一束文本框delcared像:
<%= 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编码?
所以没关系我让用户进入的形式,只要我不输出它无需再次编码?我真的不知道HTML注入是如何工作的。 – fearofawhackplanet 2010-05-25 18:53:32
是的。有很多类型的跨站点脚本攻击,但在您自己的站点上进行简单检查就是在用户输入数据(包括创建用户名时)的任何位置尝试输入''。如果您看到警报弹出窗口(假设您已打开javascript),则会找到需要HTML编码的位置。最好对所有**输出进行HTML编码,并在必要时仅删除该编码。 – RedFilter 2010-05-25 19:04:34
好的,谢谢orbman – fearofawhackplanet 2010-05-25 22:52:48