1

我有一个具有多行文本框的内部应用程序(无法从我们的网络外部访问)。众所周知,用户(同事)会将文本从 Outlook 或 MS Word 复制/粘贴到包含电子邮件地址的文本框中。发生这种情况时,他们会收到此错误:

从客户端检测到具有潜在危险的 Request.Form 值 (ctl00$ContentPlaceHolder1$txtIssueDesc="... Name < email@domain...")。

我们在 MS Visual Studio 2008 上使用 VB.NET v3.5。

有没有办法在错误触发之前去除 < > 之间的内容,以便可以将其放入数据库中,然后在以后编辑而不会出现任何问题?

4

2 回答 2

2

你可以做这些事情的组合:

  1. 查看此答案以抑制该错误。

  2. 在客户端使用正则表达式来去除 < 和 > 以及它们之间的内容。为此,您可以向提交按钮添加一个 onclick 事件,以在提交到服务器之前运行正则表达式替换。

在任何一种情况下,您仍然希望在服务器端运行正则表达式以在保存到数据库之前验证任何输入,并且同样对任何输出进行 HTML 编码。

于 2013-10-22T20:07:28.873 回答
0

它与原始问题没有直接关系。

您可能要考虑使用ASP.Net Ajax FilteredTextBox

一旦用户将任何内容传递到文本框,它就会删除无效字符。您还可以设置哪些字符有效或无效。

例如,以下代码不允许用户输入除 _.@ 之外的特殊字符。

<ajaxToolkit:FilteredTextBoxExtender 
   ID="UsernameFilteredTextBoxExtender" 
   runat="server" 
   TargetControlID="UsernameTextBox"
   FilterType="Numbers,UppercaseLetters,LowercaseLetters,Custom"  
   ValidChars="_.@" />
于 2013-10-22T20:23:28.610 回答