无法使用前导../退出顶级目录

问题描述 投票:39回答:9

我有一个asp.net网站,我们有管理区域,只有admin的登录页面,所有网站都是允许的 - 我需要询问如何为它定义正确的安全配置,因为我收到此错误

Cannot use a leading .. to exit above the top directory. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Web.HttpException: Cannot use a leading .. to exit above the top directory.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 


[HttpException (0x80004005): Cannot use a leading .. to exit above the top directory.]
   System.Web.Util.UrlPath.ReduceVirtualPath(String path) +8862087
   System.Web.Util.UrlPath.Reduce(String path) +52
   System.Web.Util.UrlPath.Combine(String appPath, String basepath, String relative) +214
   System.Web.UI.Control.ResolveClientUrl(String relativeUrl) +180
   System.Web.UI.WebControls.Image.AddAttributesToRender(HtmlTextWriter writer) +68
   System.Web.UI.WebControls.WebControl.RenderBeginTag(HtmlTextWriter writer) +20
   System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +20
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +134
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
   System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) +163
   System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) +32
   System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output) +51
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
   System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer) +40
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +134
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
   System.Web.UI.Control.Render(HtmlTextWriter writer) +10
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +134
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
   System.Web.UI.Page.Render(HtmlTextWriter writer) +29
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1266

我的配置文件:

 <authentication mode="Forms">
  <forms name=".ASPXFORMSAUTH" protection="All" loginUrl="Admin/LoginPage.aspx" path="/" enableCrossAppRedirects="true">
  </forms>
</authentication>
<authorization>
  <deny users="*" />
</authorization>

asp.net .net security url configuration
9个回答
56
投票

这意味着您的网页指的是位于文件夹一级的文件夹,但您的网页已经位于网站的根文件夹中,因此相对路径无效。根据您的异常消息判断,它看起来像图像控件导致问题。

你必须有这样的东西:

<asp:Image ImageUrl="..\foo.jpg" />

但由于页面本身位于网站的根文件夹中,因此无法将内容引用到一级,这是领先的..\正在做的事情。


15
投票

您可以使用~/img/myImage.png而不是../img/myImage.png来避免ASP.NET页面中的此错误。


9
投票

你有一个="../"风格的图像或favicon链接,如果“../”有效,将超出网站的顶部,如下所示:

图片:

http://example.com/Images/test.jpg

http://example.com/Pages/test.aspx

在该页面上有效:../Images/test.jpg 会抛出一个错误:../../Images/test.jpg


2
投票

这意味着其中一个路径在其开头有一个“..”,这将导致退出网站的根文件夹层次结构。您需要谷歌“asp.net相对路径”或类似的东西来帮助您解决问题。

顺便说一下,您看到的异常页面中包含了问题所在的提示。它实际上会告诉你它发现了什么文件。

为了避免将来出现此异常,请在整个解决方案中搜索此字符串:“../”。如果您在网站的根路径中找到任何文件,请解决它们。


2
投票

在我的情况下,结果是在母版页中注释掉了HTML!

谁知道注释掉这样的HTML实际上是由ASP.NET解释的!

<!--
<link rel="icon" href="../../favicon.ico">
-->

0
投票

我将项目从“标准”托管移动到Azure,并在尝试使用url-rewrite打开页面时出现相同的错误。即规则是:

<add key="/iPod-eBook-Creator.html" value="/Product/ProductDetail?PRODUCT_UID=IPOD_EBOOK_CREATOR" />

尝试打开my_site / iPod-eBook-Creator.html并收到此错误(页面my_site / Product / ProductDetail?PRODUCT_UID = IPOD_EBOOK_CREATOR可以毫无问题地打开)。

我检查了完全网站 - 从未使用..来“升级”


0
投票

我遇到了这样的问题,答案虽然令人沮丧,但是通过在错误消息中搜索“...”的违规页面来解决。我正在使用Visual Studio Express,解决方案是将“../../Images/”更改为“〜/ Images /”。希望这会对某人有所帮助。


0
投票

我以一种非常奇怪的方式在我的系统上发生了问题。在我的系统中,客户创建的产品位于产品类别的目录结构中。因此,ProductA可能位于文件夹CategoryOuter内的CategoryInner文件夹中。我刚刚添加了一个功能,我的URL会在URL上显示嵌套的类别:

http://www.somedomain.com/product/CategoryOuter/CategoryInner/ProductA.aspx

显然,URL上的嵌套仅用于搜索引擎优化目的(并向用户显示他们的产品所属的类别。但是当我在一些过去工作的URL上使用ResolveClientUrl时,它一定被额外的虚假路径弄糊涂了。错误消息是在调试器中弹出的某些行从来没有出现问题所以我花了很长时间才弄清楚发生了什么。我通过并删除了所有对没有进行操作的ResolveClientUrl调用。以〜开头,并使剩余的路径成为绝对路径。


0
投票

我遇到了同样的问题......我做到了。

我之前的代码:

<link rel="stylesheet" href="../css/style.default.css" type="text/css" />

我将代码更改为此后问题解决了:

<link rel="stylesheet" href="css/style.default.css" type="text/css" />

所以我认为"href=../"是不被允许的,因为当我在"../"中使用"src=../"时我没有问题

提前致谢

© www.soinside.com 2019 - 2024. All rights reserved.