Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.Net MVC、JS注入和System.ArgumentException-路径中的非法字符_Asp.net Mvc - Fatal编程技术网

Asp.net mvc ASP.Net MVC、JS注入和System.ArgumentException-路径中的非法字符

Asp.net mvc ASP.Net MVC、JS注入和System.ArgumentException-路径中的非法字符,asp.net-mvc,Asp.net Mvc,在我的ASP.NETMVC应用程序中,我使用自定义错误处理。 我想为我在应用程序中遇到的每个错误情况执行自定义操作 因此,我覆盖应用程序_错误,获取服务器.GetLastError() 根据例外情况、当前用户、当前URL(应用程序在多个域上运行)、用户IP和许多其他内容执行我的业务 显然,应用程序经常是黑客的目标。 在几乎所有情况下,检测和管理它都不是问题,但对于某些JS URL攻击,我的错误处理并没有执行我希望它执行的操作。 Ex(从日志中): 当我得到这样一个URL时,在访问web.conf

在我的ASP.NETMVC应用程序中,我使用自定义错误处理。 我想为我在应用程序中遇到的每个错误情况执行自定义操作

因此,我覆盖应用程序_错误,获取服务器.GetLastError() 根据例外情况、当前用户、当前URL(应用程序在多个域上运行)、用户IP和许多其他内容执行我的业务

显然,应用程序经常是黑客的目标。 在几乎所有情况下,检测和管理它都不是问题,但对于某些JS URL攻击,我的错误处理并没有执行我希望它执行的操作。 Ex(从日志中):

当我得到这样一个URL时,在访问web.config中的ConnectionString部分时会引发异常,我甚至无法重定向到另一个URL

它会导致“System.ArgumentException-路径中的非法字符等。”

下面的屏幕截图显示了问题:

一个显而易见的解决方案是编写一个HTTP模块,在URL到达我的应用程序之前对其进行过滤,但我希望避免这样做,因为:

  • 我喜欢在一个地方管理整个安全性(在应用程序\u Error()方法中)
  • 在模块中,我无法访问应用程序本身中的全部数据(我不想在这里讨论应用程序特定的数据)
问题: 你遇到这个问题了吗? 你是怎么做到的

谢谢你的建议

莫斯

PS:这是堆栈跟踪:


您可以发布堆栈跟踪/内部异常详细信息吗?
http://localhost:1809/Scripts/]||!o.support.htmlSerialize&&[1
System.ArgumentException: Illegal characters in path.
at System.IO.Path.CheckInvalidPathChars(String path)
at System.IO.Path.Combine(String path1, String path2)
at System.Web.Configuration.UserMapPath.GetPhysicalPathForPath(String path, VirtualDirectoryMapping mapping)
at System.Web.Configuration.UserMapPath.GetPathConfigFilename(String siteID, VirtualPath path, String& directory, String& baseName)
at System.Web.Configuration.UserMapPath.MapPath(String siteID, String path)
at System.Web.Hosting.HostingEnvironment.MapPathActual(VirtualPath virtualPath, Boolean permitNull)
at System.Web.Hosting.HostingEnvironment.MapPathInternal(VirtualPath virtualPath, Boolean permitNull)
at System.Web.CachedPathData.GetPhysicalPath(VirtualPath virtualPath)
at System.Web.CachedPathData.GetConfigPathData(String configPath)
at System.Web.CachedPathData.GetVirtualPathData(VirtualPath virtualPath, Boolean permitPathsOutsideApp)
at System.Web.HttpContext.GetFilePathData()
at System.Web.HttpContext.GetConfigurationPathData()
at System.Web.Configuration.RuntimeConfig.GetConfig(HttpContext context)
at System.Web.HttpContext.get_ImpersonationToken()
at System.Web.ClientImpersonationContext.Start(HttpContext context, Boolean throwOnError)
at System.Web.HttpApplication.ThreadContext.Enter(Boolean setImpersonationContext)
at System.Web.HttpApplication.OnThreadEnterPrivate(Boolean setImpersonationContext)
at System.Web.HttpApplication.ApplicationStepManager.ResumeSteps(Exception error)