我有一个电子商务礼品商店,用户可以为他们的收件人填写礼品卡。我是否安全地使用Html.Raw()?
为了填写卡片,我让用户将文本输入到多行文本框中。
当我在最终评论页面上显示礼品卡时,我必须用Html.Raw吐出信息,以便Newlines正确显示。我这样做:
@(Model.GiftCard.Text != null ? Html.Raw(Model.GiftCard.Text.Replace(char.ConvertFromUtf32(13),"<br />")) : Html.Raw(""))
我很害怕我进入使用Html.Raw在用户输入的值的危险领土。然而,当我回到礼品卡入口页面时,当我尝试做一些类似“这是我的礼品卡!(scripttag)alert('test');(/ scripttag)”... so我觉得.net会在这一点上捕获任何恶意条目。
我可以安全继续吗?看来,由于礼品卡条目页面正在运行针对恶意代码的验证,我应该稍后使用HtmlRaw来显示我正在放入自己的换行符html ...
(我将实际的脚本标记与此(scripttag)上面的东西,所以它会显示在计算器中)
我会对字段进行验证,将字段限制为可接受的字符和/或对值进行html.encode。 – Brian 2012-03-28 21:08:52
你有一个例子或链接可以帮助我确保我只允许接受字符吗?不会在JavaScript中(因此,你可以绕过它并发布其他东西吗?) – 2012-03-28 21:11:16
是的,它会是JavaScript。是的,可能这就是字段中的html.encode出现的地方,所以可以用于注入攻击的字符被处理。我会挖掘一些我可以发布的JS验证。 – Brian 2012-03-28 21:15:07