我安全地使用Html.Raw()吗?

时间:2012-03-28 21:05:48

标签: asp.net-mvc-3 razor

我有一个电子商务礼品店,用户可以为其收件人填写礼品卡。

为了填写卡片,我让用户在多行文本框中输入文字。

当我在最终评论页面上显示礼品卡时,我必须使用Html.Raw吐出信息,以便正确显示新行。我这样做:

@(Model.GiftCard.Text != null ? Html.Raw(Model.GiftCard.Text.Replace(char.ConvertFromUtf32(13),"<br />")) : Html.Raw(""))

我很害怕我在用户输入的值上使用Html.Raw进入危险区域。但是,当我回到礼品卡入口页面时,当我尝试做“这是我的礼品卡!(脚本标签)警报('测试');(/ scripttag)”这样的页面时...我觉得.net会在这一点上捕获任何恶意条目。

我这样安全吗?似乎由于礼品卡入口页面正在运行针对恶意代码的验证,我可以稍后使用HtmlRaw来显示我自己投入的新行html ...

(我用上面的这个(scripttag)替换了实际的脚本标签,所以它将在stackoverflow中显示)

2 个答案:

答案 0 :(得分:2)

在视图模型中使用正则表达式,以确保人们只输入A-Za-z0-9以及您认为应该使用的任何其他内容,例如:) =]类型的东西。筛选这个东西前端比在出路时猜测它更好。

答案 1 :(得分:0)

如何使用     &LT;预&GT;&LT; /预&GT; 标签反而?这将允许返回显示在HTML中而不需要Html.Raw?