Невозможно использовать ведущий ../ для выхода из верхнего каталога - PullRequest
41 голосов
/ 14 февраля 2010

У меня есть веб-сайт asp.net, у нас есть административная область со страницей входа только для администратора, и весь сайт разрешен для всех - мне нужно спросить, как определить правильную конфигурацию безопасности для него, когда я получаю эту ошибку

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>

Ответы [ 9 ]

56 голосов
/ 14 февраля 2010

Это означает, что ваша веб-страница ссылается на контент, который находится в папке на один уровень выше вашей страницы, но ваша страница уже находится в корневой папке веб-сайта, поэтому относительный путь неверен. Судя по сообщению об исключении, похоже, что проблема связана с управлением изображениями.

У вас должно быть что-то вроде:

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

Но поскольку сама страница находится в корневой папке веб-сайта, она не может ссылаться на контент на один уровень выше, чем и занимается ведущий ..\.

15 голосов
/ 20 августа 2013

Вы можете использовать ~/img/myImage.png вместо ../img/myImage.png, чтобы избежать этой ошибки на страницах ASP.NET.

9 голосов
/ 14 февраля 2010

У вас есть изображение или ссылка на значок в стиле ="../" где-то, что, если бы "../" был действительным, он вышел бы за верхнюю часть сайта, например:

Изображение:

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

Страница

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

Действительно на этой странице: ../Images/test.jpg
Выдает ошибку: ../../Images/test.jpg

2 голосов
/ 05 октября 2017

В моем случае это был закомментированный HTML на главной странице!

Кто знал, что закомментированный HTML, такой как этот, действительно интерпретировался ASP.NET!

<!--
<link rel="icon" href="../../favicon.ico">
-->
2 голосов
/ 12 марта 2014

Это означает, что у одного из путей в начале есть «..», что приведет к выходу из иерархии корневой папки веб-сайта. Чтобы решить вашу проблему, вам нужно использовать Google "относительные пути asp.net" или что-то в этом роде.

Кстати, подсказка о том, где проблема, включена в страницу исключений, которую вы видели. Он на самом деле скажет вам, в каком файле он обнаружил проблему.

Чтобы предотвратить появление этого исключения в будущем, выполните поиск во всем решении этой строки: "../". Если вы обнаружите что-либо из этого в файлах в корневом каталоге вашего веб-сайта, обратитесь к ним.

0 голосов
/ 16 апреля 2019

У меня такая же проблема ... и я это сделал.

Мой код раньше:

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

и проблема решена после того, как я изменил свой код на это:

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

так что я думаю "href=../" не разрешено, потому что у меня нет проблем при использовании "../" в "src=../"

Заранее спасибо

0 голосов
/ 13 ноября 2016

У меня возникла проблема в моей системе очень странным образом. В моей системе клиенты создают продукты, которые находятся внутри структуры каталогов категорий продуктов. Таким образом, ProductA может находиться в папке CategoryInner внутри папки CategoryOuter. Я только что добавил функцию, в которой мой URL будет отображать вложенность категорий в URL:

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

Очевидно, что вложение в URL было сделано только для целей SEO (и чтобы показать пользователю, в какой категории находится их продукт. Но когда я использовал ResolveClientUrl на некоторых URL, которые раньше работали, это, должно быть, смутило дополнительное фальшивый путь. Сообщение об ошибке выскакивало в отладчике на какой-то строке, которая никогда не была проблемой, поэтому мне потребовалось некоторое время, чтобы выяснить, что происходит. не начинался с ~ и сделал остальные пути абсолютными путями.

0 голосов
/ 26 августа 2015

У меня была такая проблема, и ответ, хотя и разочаровывающий в поиске, был решен путем поиска на ошибочной странице слова ".." в сообщении об ошибке. Я использую Visual Studio Express, и решение менялось с "../../Images/" на "~ / Images /". Надеюсь, это кому-нибудь поможет.

0 голосов
/ 10 ноября 2014

Я переместил свой проект со «стандартного» хостинга в Azure и получаю ту же ошибку при попытке открыть страницу с перезаписью URL-адреса. То есть правило:

<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 можно открыть без проблем).

Я проверил полностью сайт - никогда не использовал .. для "повышения"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...