1

アプリケーションをTomcat、WebLogic、WebSphere、JBossにデプロイしたいと考えています。アプリケーションのweb.xmlには、デフォルトのサーブレットへのマッピングが含まれている必要があります。

Tomcatの場合、このサーブレットの名前は「デフォルト」であるため、マッピングは次のように表示されます。

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/js/calendar/flexcal.html</url-pattern>
</servlet-mapping>

ただし、他のプラットフォームでは変更されます(つまり、WebLogicは「FileServlet」です)。

利用可能なものに応じて変化する条件付きマッピングを定義する方法はありますか?そうでない場合は、この問題にどのように取り組む必要がありますか?

ありがとう!

4

1 に答える 1

5

道はない。

コンテナのデフォルトサーブレットに明示的にマップしないことが望ましいです。Webアプリケーションを特定のコンテナーに緊密に結合しているだけでなく、約1年前まで、Tomcatとクローン(JBoss、WebSphereなど)でそれを行うときに大きなセキュリティホールもありました。これにより、攻撃者は、デフォルトのサーブレットがとは異なるURLパターンにマップされたときはいつでも、ファイル(機密情報を含む可能性があります)を要求でき/WEB-INFます。本当にあなたによって報告された問題50026も参照してください。/META-INF/

代わりに、フロントコントローラーサーブレットをより具体的なURLパターンに/*マップし、グローバルフィルターを作成してマップします。このフィルター/*は、現在のリクエストURIに応じて、フロントコントローラーに転送するか、デフォルトのサーブレットに続行します。具体的な例については、グローバルフロントコントローラーサーブレットを/*にマッピングするときに静的リソースにアクセスする方法も参照してください。

于 2012-03-23T14:30:28.263 に答える