1

Java での MVC Web アプリケーションについて非常に基本的な質問があります。

生の JSP の昔から Seam のような現在の技術に至るまで、非常に基本的なパターンは常に、最初に要求を受け入れたコントローラーから、クライアントに送信される出力を作成するビュー層への内部ディスパッチでした。

通常、この内部ディスパッチは、URL を使用してサーブレット コンテナーに新しいリソースを要求することによって行われます (構成の追加レイヤーによってメカニズムが隠されている場合があります)。これらの URL のマッピングは、外部への「実際の」URL も定義する同じ web.xml によって行われます。

特別な対策を講じない限り、ビュー レイヤーに直接アクセスできることがよくあります。"register.seam" をバイパスして直接 "registered.xhtml" に移動できる Seam "registration" デモをご覧ください。これは潜在的なセキュリティ上の問題です。少なくとも、ビュー テンプレートのソース コードが漏洩します。

これが基本的なサンプル アプリケーションにすぎないことは承知していますが、これらの内部リソースを外部から見えないようにするために特別な措置を講じる必要があることも奇妙です。

URL エントリ ポイントを制限する最も簡単な方法は何ですか?

内部要求によってのみアクセスできる魔法の URL パスコンポーネントである「WEB-INF」ディレクトリのようなものはありますか?

4

4 に答える 4

3

デプロイメント記述子で asecurity-constraintを使用すると、内部リソースへのアクセスを防ぐことができます。web.xml

たとえば、次の構成を使用して、JSP への直接アクセスを防ぎます。

<!-- Prevent direct access to JSPs. -->
<security-constraint>
    <web-resource-collection>
        <web-resource-name>JSP templates</web-resource-name>
        <url-pattern>*.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint/> <!-- i.e. nobody -->
</security-constraint>
于 2009-01-17T14:37:06.003 に答える
1

これを処理する 1 つの方法は、すべての要求の要求パスを調べ、それに応じて各要求を処理するサーブレット フィルターを作成することです。JavaServer Pages (JSP) と JSTL - JSP によるアクセス制御の開始に役立つリンクを次に示します。

于 2008-10-01T03:55:01.823 に答える
1

インターネット リクエストがアプリケーション サーバーに直接アクセスできるようにすることはお勧めしません。前面に Web サーバーを配置し、その中で特定の種類の URL の要求を許可します。人々が foo.com/jsps にアクセスしたくないですか? そこで一度だけ制限してください。

ここでは、このトピックに関する会話が少しあります: WEB-INF の背後にページを隠しますか?

于 2008-10-01T02:38:01.133 に答える
0

内部 JSP を .xml に入れるアプリケーションをいくつか見てきましたWEB-INF/jsp。少なくとも JSP と Velocity では、これでうまくいくようです。ただし、 JSF では機能しないようです。

于 2010-01-12T01:06:58.110 に答える