asp.net-mvc-3 - 我是否安全地使用 Html.Raw() ?

标签 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)alert('test');(/scripttag)”之类的操作时,页面中断了……所以我觉得 .net 会在那个时候捕获任何恶意条目。

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

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

最佳答案

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

关于asp.net-mvc-3 - 我是否安全地使用 Html.Raw() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9915633/

相关文章:

asp.net-mvc-3 - 保持 session 事件 MVC3

ASP.NET MVC 3.0 FormCollection 中的 JQuery Post 表单

javascript - 如何正确地将 javascript 与 razor 语法结合起来

c# - 使变量在 C# 中的 if block 之外持续存在

c# - 序列包含多个匹配元素 - 使用 Entity Framework 添加项目

jquery - MVC3 jQuery - 部分验证

c# - 为什么我们的项目需要接口(interface)层/抽象类?

javascript - 使用 Javascript 找出 Web 应用程序的主路径

javascript - MVC Razor 应用程序中的 SignalR javascript

razor - 我们能否获取 Umbraco razor View 中特定文档类型的创建节点数