我有一个电子商务礼品店,用户可以为其收件人填写礼品卡。
为了填写卡片,我让用户在多行文本框中输入文字。
当我在最终评论页面上显示礼品卡时,我必须使用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中显示)
答案 0 :(得分:2)
在视图模型中使用正则表达式,以确保人们只输入A-Za-z0-9以及您认为应该使用的任何其他内容,例如:) =]类型的东西。筛选这个东西前端比在出路时猜测它更好。
答案 1 :(得分:0)
如何使用 &LT;预&GT;&LT; /预&GT; 标签反而?这将允许返回显示在HTML中而不需要Html.Raw?