【发布时间】:2011-08-29 00:34:10
【问题描述】:
我完全不知道为什么会收到此错误。此错误的典型原因与尝试将 HTML 标记提交到文本字符串或类似内容有关,但我没有做类似的事情。我认为发生这种情况的页面包含一个简单的电子邮件地址。
这是我的验证模型...
public class Subscriber
{
[Key]
[DisplayName("Email Address")]
[Required(ErrorMessage = "{0} is required")]
[RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})$", ErrorMessage = "{0} must be a valid email address")]
public string EmailAddress { get; set; }
public Guid UnsubscribeKey { get; set; }
}
这是我的脚本引用,因为错误似乎在 Scripts 目录中...
<script src="@Url.Content("~/Scripts/jquery-1.5.2.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
我的最佳猜测是有人恶意在电子邮件地址中输入了一些无效脚本,但我在 Elmah 或 CodeSmith Insight 中没有看到任何指向我的代码的错误。我什至无法弄清楚这到底发生在哪里。
这里是错误...
检测到来自客户端 (:) 的潜在危险 Request.Path 值。 (/NewsList/Scripts/,data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}), i.html(g)
System.Web.HttpException (0x80004005):从客户端 (:) 检测到潜在危险的 Request.Path 值。 在 System.Web.HttpRequest.ValidateInputIfRequiredByConfig() 在 System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext 上下文)
在 System.Web.HttpRequest.ValidateInputIfRequiredByConfig() 在 System.Web.HttpApplication+PipelineStepManager.ValidateHelper(HttpContext 上下文)
路径中有非法字符。
System.ArgumentException:路径中有非法字符。 在 System.IO.Path.CheckInvalidPathChars(字符串路径) 在 System.Security.Permissions.FileIOPermission.HasIllegalCharacters(String[] str) 在 System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess 访问,AccessControlActions 控件,String[] pathListOrig,布尔 checkForDuplicates,布尔 needFullPath,布尔 copyPathList) 在 System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess 访问,字符串路径) 在 System.Web.InternalSecurityPermissions.PathDiscovery(字符串路径) 在 System.Web.HttpRequest.get_PhysicalPath() 在 WebsitePanel.IIsModules.SecureFolders.context_OnEnter(对象发送者,EventArgs e) 在 System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
在 System.IO.Path.CheckInvalidPathChars(字符串路径) 在 System.Security.Permissions.FileIOPermission.HasIllegalCharacters(String[] str) 在 System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess 访问,AccessControlActions 控件,String[] pathListOrig,布尔 checkForDuplicates,布尔 needFullPath,布尔 copyPathList) 在 System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess 访问,字符串路径) 在 System.Web.InternalSecurityPermissions.PathDiscovery(字符串路径) 在 System.Web.HttpRequest.get_PhysicalPath() 在 WebsitePanel.IIsModules.SecureFolders.context_OnEnter(对象发送者,EventArgs e) 在 System.Web.HttpApplication+SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
更新 - 可能已解决 在对此进行了更多思考之后,我在堆栈跟踪中看到了“WebsitePanel.IIsModules.SecureFolders”,这影响了我的记忆。我记得在我的托管服务提供商上看到了一些关于安全文件夹的信息。此功能隐藏在他们的控制面板中,根据该方法是有意义的。我给他们发了电子邮件并要求他们禁用该模块。这几天没有发生,所以我怀疑是它。
【问题讨论】:
-
验证电子邮件的正则表达式不正确。仅提及一个缺陷,它不接受电子邮件地址的第一部分中的
+。 -
@icktoofay 你有没有一个无效的电子邮件地址的例子,但我目前的逻辑会说是有效的?
-
我实际上是说它拒绝了有效的电子邮件地址(如
example+test@gmail.com),但您的正则表达式接受aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@a.com,但它是一个无效的电子邮件地址。那里的具体问题(本地部分超过 64 个字符)很容易在正则表达式中修复,但推荐的选项是使用遵循 RFC 的电子邮件解析器,而不是使用正则表达式,因为这不是唯一的问题。 -
您可能是正确的,我的正则表达式中存在验证漏洞,据我所知,仅按照@binobita 的建议创建数据类型 EmailAddress 不会为我连接验证。该数据类型仅对兼容 HTML5 的浏览器有好处。到目前为止,我很感激你的帮助,我认为你们都提出了有效的观点,但没有一个人会解决我在服务器上遇到的异常。
-
我不认为这是服务器端。我一直在收到similar errors,我运行 php。 javascript 来自 jQuery,请参阅their source。我不知道为什么会发生这种情况,但也许我们可以找到我们的服务器/网站的共同点? (同样的问题请参见this question。)
标签: jquery model-view-controller asp.net-mvc-3