【问题标题】:A potentially dangerous Request.Path value was detected from the client从客户端检测到潜在危险的 Request.Path 值
【发布时间】: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


【解决方案1】:

正如异常所说的请求路径中有非法字符,更具体地说,冒号字符不正确 (:) = "从客户端检测到潜在危险的 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"


从客户端 (:) 检测到具有潜在危险的 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 context)

在 System.Web.HttpRequest.ValidateInputIfRequiredByConfig() 在 System.Web.HttpApplication+PipelineStepManager.ValidateHelper(HttpContext context)

路径中有非法字符。


【讨论】:

    【解决方案2】:

    在客户端提交电子邮件地址之前,您似乎没有验证电子邮件地址。您可以使用以下代码来验证电子邮件地址。同时为邮件输入字段设置maxlength属性。

    function validateEmail(email) 
    { 
     var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\
    ".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA
    -Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ 
     return email.match(re) 
    }
    
    if(!validateEmail($("#emailAddress).val()){
         alert("Invalid email address");
    }
    

    【讨论】:

    • 我启用了客户端验证,当我输入无效的电子邮件地址时,我无法进行回发,因此它实际上正在客户端验证。
    • 你能设置这个输入字段的最大长度吗?
    • 是的,我会设置最大长度,看看是否有帮助。仅供参考,我尝试并粘贴了一个 1,000 个字符的字符串,但它未能通过客户端验证,但没有报告我最初问题中提到的错误。
    【解决方案3】:

    ASP.NET MVC 已经有 DataType 属性。您可以使用它来代替正则表达式

    public class Subscriber
    {
        [Key]
        [DisplayName("Email Address")]
        [Required(ErrorMessage = "{0} is required")]
        [DataType(DataType.EmailAddress)]
        public string EmailAddress { get; set; }
    
        public Guid UnsubscribeKey { get; set; }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-04-06
      • 2017-10-07
      • 2011-08-06
      • 2011-08-23
      • 1970-01-01
      • 2019-04-04
      • 2011-12-25
      相关资源
      最近更新 更多