[英]Gracefully handling HTML tags on form submission in asp.net MVC 2
嗨,我有一个MVC网站,将让用户输入要在网页上显示的文本。 我正在尝试提出一种处理用户尝试输入的任何HTML的优雅方法-因为您可能会知道MVC 2对文本中的任何HTML都会引发错误。
我使用ViewModels并使用DataAnotation类中的过滤器装饰属性,以验证表单。
现在有人这样吗?
是否有一些疯狂的正则表达式无法与HTML相匹配,但不能与其他任何方式匹配?
我愿意接受任何建议。
谢谢,
西蒙
添加以下属性将阻止运行时抱怨:
[ValidateInput(false)]
public ActionResult SomeEvilAction ()
{
/* ... */
}
现在,您的任务就是对显示在页面上的每个输入进行HTML编码:
<%= HttpUtility.HtmlEncode (Model.Text) %>
要么
<%: Model.Text %>
我前几天在一个网站上做了这件事。
我使用的是所见即所得的编辑器,该编辑器放置了正确的html,而不是bb代码。
我从page指令禁用了页面上的验证,以停止mvc引发潜在的不安全代码异常,并使用正则表达式删除了所有脚本标签实例。
参见Developer Art的帖子
您可能需要将此添加到您的web.config
<httpRuntime requestValidationMode="2.0" />
我使用的正则表达式如下:
(?<startTag><\s*script[^>]*>)(?<scriptContent>[\s\S]*?)(?<endTag><\s*/script>)
这将为您提供3个命名组。 startTag scriptContent endTag
因此,您可以对script元素进行替换并显示脚本的内容,或者将其完全删除。
您真正想做的任何事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.