c# - 清理表单输入中的多个空格/换行符

标签 c# asp.net regex asp.net-mvc

我在将呈现在公共(public)页面上的字段中接受用户输入(例如,论坛上的帖子或网站上的评论)。我希望能够使用 CSS 属性将这些呈现为段落以及必要时用户的换行符

white-space: pre-line;

这允许用户以段落格式发帖,就像您正在阅读的这篇帖子一样。

但是,我不希望恶意用户能够提交带有大量空白的帖子,从而大大增加页面的长度。目前我正在尝试使用正则表达式 清理输入,删除重复的空白字符(双空格或双换行符)。这有点复杂而且非常丑陋。我仍然希望用户能够提交包含空格的帖子。但是编写正则表达式真的仍然是解决这个非常普遍的问题的最佳方法吗?

在 C#/ASP.NET 中是否有清理用户输入的多余空白字符的最佳实践,或者编写我们自己的正则表达式仍然是 2015 年的最佳选择?

最佳答案

如果恶意用户想要破坏您的站点以发布他们自己的内容,他们会的。如果他们不能使用过多的空格,他们就会滥用标记使整个帖子都变成粗体,或者他们只会发布几兆的 Lorem Ipsum。

没有“一个规则可以全部禁止”,所以如果您想这样做,您只需将重复的空格折叠成一个即可。

一种方法是使用现有的用户安全的 HTML 模板引擎,例如 Markdown,而不是自己开发。

关于c# - 清理表单输入中的多个空格/换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30029449/

相关文章:

javascript - MVC 3 ValidationMessageFor() 没有出现

regex - 美国银行机构帐号正则表达式?

正则表达式查找时间值

c# - 如何替换 ReadLine 以退出我的应用程序?

c# - 在dm_exec_requests中标识特定线程的条目

c# - 使用 Windows 传真发送和接收传真

C# 屏幕抓取 ASP.NET 网页表单页面 - POST 请求未完全正常工作

c# - 如何敦促用户在进入网站时更新用户的浏览器

asp.net - Page_Load(object sender, EventArgs e) 和 $(document).ready(function () 之间哪个先运行?

c# - 正则表达式没有从字符串中获取每个匹配项