2015-12-10 19 views
7

外部クライアントが、コロン(:)文字を含むURLを使用してAzure Webサイトにアクセスしています。要求は有効ではありませんが、以前のIISサーバーでは404エラーが発生します。 Azureでは、同じURLで500のエラーが発生します。私はログをチェックしなければならないので、これは私の時間を無駄にする。これは、要求の例である:URLにコロンがあると、Azure Webサイトで500のエラーが発生する

http://www.example.com/http:/www.example.com

は、サーバー側でこの動作を回避する方法はありますし、代わりに4XXエラーを与えますか?この問題はAzureのみであり、私は要求を制御しません。

+0

より正確には、これは:/シーケンスであり、これは単にコロンではなくトリガされているように見えます。それでも、間違っているようです。 –

+0

そうです、そうです。 –

+0

あなたは解決策を見つけましたか?私は紺碧で同じ問題を扱っています。 Googlebotは、これらの不正なURLを使用してGoogleのサイトにアクセスし、アラートをトリガーします。 –

答えて

1

は、.NETアプリケーションを実行している場合は、これはその要求のフィルタリング機能によって、より具体的には、ASP.NETのHTTPランタイムによって引き起こされます。

URLパスが許可されていない文字(<,>,*,%,&,:,\\,?)のいずれかが含まれている場合、ランタイムは例外をスローし、例外のため、IISは、エラーコード500

System.Web.HttpException返し:潜在的に危険をRequest.Path値がクライアント(:)から検出されました。

あなたのweb.configファイルには、configureの許可されていない文字を使用できます。

<system.web> 
    <httpRuntime targetFramework="4.5" requestPathInvalidCharacters="*,%" /> 
</system.web> 

しかし、このような変更がセキュリティに与える影響があるため、注意が必要です。

+2

残念ながら、これはAzureのWebサイトでは役に立ちません。 targetFramework属性を4.6に変更しました。これはそこで使用されているバージョンです。 –

+1

Azureがweb.configを見る前にエラーが発生しました。 –

0

AzudのKUDUコンソールを使用して、applicationhost.xdtファイルをD:\ home \ siteに追加します。

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document- Transform"> 
<system.applicationHost> 
<sites> 
    <site name="%XDT_SITENAME%" xdt:Locator="Match(name)"> 
      <virtualDirectoryDefaults xdt:Transform="Insert" allowSubDirConfig="false" /> 
      </site> 
</sites> 

これは仕事をしていませんが、任意のアプリケーションのサブディレクトリにあるweb.configファイルが無視されたことで、不幸な副作用があります。我々の面では、これは静的なファイルを読み込まないという効果があり、サイトが正しく動作しなかったことを意味していました。

これは、ルートレベルで1つのweb.configを持つすべてのサイトで正常に動作します。

関連する問題