2017-10-17 12 views
0

URLがhttp://10.26.14.99/projectA、つまり環境1で、同じアプリケーションがURLを持つ別のWebサーバーでホストされているWebサーバーでホストされているASP.NET MVCアプリケーションがありますhttps://projectA.test.comつまり環境2。私はhttp://10.26.14.99/projectA/../../../../testを入力したときに../../../testが404ファイルまたはフォルダが見つかりませんエラー

は今、environment1のためには、404でhttp://10.26.14.99/testとしてURLを示している「ファイルまたは見つからないフォルダ」というエラーが、私はhttps://projectA.test.com/../../../../testを入力した場合、それはhttps://projectA.test.com/testとしてURLを示しているenvironment2に対して同時にかつそれはまた、期待されるログインページに私を連れて行きます。

誰も環境2と同じ期待結果を得るために環境1で行う必要があることを教えていただけますか?

+0

「[URL]を入力する」と言ったときの意味を明確にしてください。ブラウザで?ビューで?あなたはどこに入りますか? – NightOwl888

答えて

0

ASP .NET MVCでは、~チルダを使用してパスを指定すると、アプリケーションルートを指定できます。

例えば、あなたのカミソリには、cshtmlファイルがあるかもしれません。

<a href="~/test">test link</a> 

問題は、仮想アプリケーションを使用してローカルでテストしているときです。多くの人にとって、..はあなたのアプリケーションのパスの外に連れて行っています。

~がMVCアプリケーションでどのように機能するかについては、hereを参照してください。


また、URLパスに問題がなければ、仮想アプリケーションからサービスを提供しないようにサイトをホストする方法を変更する必要があります。ただし、IPアドレスごとに1つのアプリケーションしかホストできません。

+0

これは、ディレクトリトラバーサル攻撃に対するアプリケーションセキュリティチェックの一種です。私は "〜"または@ Html.Content()を任意の相対パスに使用していますが、ユーザーが "10.26.14.99/projectA/../../../../test"というURLを入力した場合は、私はそれをカスタムエラーページにリダイレクトしたい、またはユーザーをログインページにリダイレクトする必要があります。現在のシナリオで私は404エラーを取得しています –

+0

そう、あなたはprojectAサイトの外に行くインスタンスでは、デフォルトのIISサイトで何かをする必要があります。 –

+0

これは、IISレベルでこの問題を解決するいくつかの設定やフラグがあるかどうかを確認しようとしていますが、何も見つかりませんでした。あなたが何かを持っているなら教えてください。 –

0

ASP.NET MVCで相対URLを使用しないでください。デフォルトのURLマッピングのために異なるURLからページにアクセスできるため、これらは壊れてしまいます。たとえば、http://example.com/http://example.com/Home、およびhttp://example.com/Home/Indexはすべて同じページを指すことができます。そのため、画像やその他のアセットはURLからアクセスされるため、アセットを3つすべてからアクセスできる必要があります。

アシュリーが言及したようにチルダ(〜)を使用してサイトの相対URLを使用する方が良いです。より最近のバージョンのMVC(Razorバージョン3以上を使用)では、これらのURLはhrefおよびsrc属性で直接サポートされていますが、場合によっては@Html.Content()ヘルパーを使用する必要があります。

唯一の例外は、CSSにあるURLです。 CSSのURLはCSSファイルの場所に相対的なので、相対URLはCSSで使用すると問題ありません。

+0

これはディレクトリトラバーサル攻撃に対するアプリケーションセキュリティチェックの一種です。私は "〜"または@ Html.Content()を任意の相対パスに使用していますが、ユーザーが "http://10.26.14.99/projectA/../../../../test"というURLを入力した場合"私はそれをカスタムエラーページにリダイレクトするか、ログインページにリダイレクトする必要があります。現在のシナリオで私は404エラーを取得しています。 –

+0

404が正しい応答です。 WebサーバーはそのようなURLのように動作する必要があります存在しません。 –

+0

はい、サーバーごとの応答404は正しいです。しかし、私はいくつかのユーザーフレンドリーなメッセージを表示するこのシナリオを処理したい。どうやってやるの? –

関連する問題