7

ここで1 つのアイデアを見つけました。/WEB-INF の下にファイルを置くことは、直接アクセスをブロックする方法です。

Facelets を使用すると、XHTML ファイルがテンプレートまたはインクルード ファイルである場合、/WEB-INF の下に配置することもできます (基本的に JSP の場合と同じ制限)。

このページでは、特定のユーザー グループのメンバーのみに XHTML への直接アクセスを許可する、Java EE セキュリティに基づくソリューションも示しています。

<security-constraint>
    <display-name>Restrict XHTML Documents</display-name>
    <web-resource-collection>
        <web-resource-name>XHTML</web-resource-name>
        <url-pattern>*.xhtml</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description>Only let 'developer's access XHTML pages</description>
        <role-name>developer</role-name>
    </auth-constraint>
</security-constraint> 

これらのソリューションのいずれかをお勧めしますか、それとも両方とも一般的に使用されていますか?

4

2 に答える 2

12

フォルダーへの配置/WEB-INFは、テンプレート ファイル、インクルード ファイル、およびタグ ファイルにのみ適用されます。これらのファイルは、有効なマッピングによっても、URL によって直接およびスタンドアロンでアクセスすることはできません。

FacesServleton をマップしていない場合、セキュリティ制約は公開ファイルにのみ適用されます*.xhtml。たとえば、マップしている場合は、URL で*.jsfパブリック リソースを開くことがfoo.jsfできますが、拡張子をfoo.xhtml. そのセキュリティ上の制約により、これが妨げられます。

しかし、より良いのは、FacesServleton を*.xhtml直接マップすることです。このようにして、そのセキュリティ制約はもう必要ありません。ただし、テンプレート/インクルード/タグ ファイルは引き続き/WEB-INFフォルダーに配置する必要があります。一般的なアイデアを得るには、OmniFaces ショーケース プロジェクトのソースが役立つ場合があります (WEB-INF ここを参照)。

以下も参照してください。

于 2012-05-13T18:35:35.143 に答える
1

.xhtml を Web 情報フォルダーの下に配置して、そこから提供できる可能性は非常に高いです。

ルールを web.xml に入れるなどの装飾的なプログラミングに頼る代わりに、JSecurity などのセキュリティ ソリューションを調べて、アプリケーションに JAAS を提供します。

于 2012-05-13T16:32:10.860 に答える