繁体   English   中英

从客户端检测到潜在的危险Request.Path值

[英]A potentially dangerous Request.Path value was detected from the client

我完全不知道为什么会收到此错误。 导致此错误的典型原因与尝试将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(克)

System.Web.HttpException(0x80004005):从客户端(:)检测到潜在的危险Request.Path值。 在System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext上下文)的System.Web.HttpRequest.ValidateInputIfRequiredByConfig()处

在System.Web.HttpApplication + PipelineStepManager.ValidateHelper(HttpContext上下文)的System.Web.HttpRequest.ValidateInputIfRequiredByConfig()处

路径中包含非法字符。

System.ArgumentException:路径中的非法字符。 在System.Security.Permissions.FileIOPermission.HasIllegalCharacters(String [] str)在System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess访问,AccessControlActions控件,String [] pathListOrig,在System.IO.Path.CheckInvalidPathChars(String path)在位于System.Web.InternalSecurityPermissions.PathDiscovery(字符串路径)位于System.Web.HttpRequest.get_PhysicalPath()处的System.Security.Permissions.FileIOPermission..ctor(布尔值path)处的布尔值checkForDuplicates,布尔值NeedFullPath,布尔值copyPathList)在System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()处的WebsitePanel.IIsModules.SecureFolders.context_OnEnter(对象发送方,EventArgs e)在System.Web.HttpApplication.ExecuteStep处的Web.Web.HttpApplication.IExecutionStep.Execute()

在System.Security.Permissions.FileIOPermission.HasIllegalCharacters(String [] str)在System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess访问,AccessControlActions控件,String [] pathListOrig,在System.IO.Path.CheckInvalidPathChars(String path)在位于System.Web.InternalSecurityPermissions.PathDiscovery(字符串路径)位于System.Web.HttpRequest.get_PhysicalPath()处的System.Security.Permissions.FileIOPermission..ctor(布尔值path)处的布尔值checkForDuplicates,布尔值NeedFullPath,布尔值copyPathList) System.Web.HttpApplication + SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()处的WebsitePanel.IIsModules.SecureFolders.context_OnEnter(Object sender,EventArgs e)在System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&completelysynchronously)

更新-可能已解决在使我更加绞尽脑汁之后,我在堆栈跟踪中看到了“ WebsitePanel.IIsModules.SecureFolders”,这震撼了我的记忆。 我记得在托管服务提供商上看到过有关安全文件夹的信息。 此功能隐藏在其控制面板中,这将根据该方法有意义。 我给他们发了电子邮件,要求他们禁用该模块。 几天没有发生,所以我怀疑是这样。

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

System.Web.HttpException(0x80004005):从客户端(:)检测到潜在的危险Request.Path值。 在System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext上下文)的System.Web.HttpRequest.ValidateInputIfRequiredByConfig()处

在System.Web.HttpApplication + PipelineStepManager.ValidateHelper(HttpContext上下文)的System.Web.HttpRequest.ValidateInputIfRequiredByConfig()处

路径中包含非法字符。


好像您没有在客户端上提交之前验证电子邮件地址。 您可以使用以下代码来验证电子邮件地址。 同时,将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");
}

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; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM