2009-03-19 5 views
4

Je suis nouveau à Icefaces et Facelets à la fois, mais je les utilise sur un nouveau projet. J'ai tout configuré et fonctionne bien. Cependant, quand je visite mywebapp/file.xhtml, la source entière de modèle de facelets apparaît dans mon navigateur. Comment pourrais-je cacher cela pour empêcher les utilisateurs de voir mes modèles côté serveur?Cacher .xhtml source - facelets/icefaces?

Répondre

4

Placez tous les modèles dans WEB-INF/someDirectory/templates.

Puis, selon la documentation facelets mettre cela à l'intérieur de votre web.xml pour tous les autres fichiers xhtml:

<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>someone</role-name> 
    </auth-constraint> 
</security-constraint> 
1

Dans le web.xml doit être une entrée qui vous permet de configurer le comportement des modèles xhtml (afficher/cacher ..)

Si vous déplacez les fichiers .jsp dans le dossier WEB-INF (vous devez reconfigurez le chemin jsp pour JSF), vous ne pouvez pas y accéder par URL. Chaque serveur J2EE/Webcontainer que je connais agit de cette manière.

Une autre façon est un filtre de servlet auto écrite, etc.

Mais, pourquoi voulez-vous cacher vos modèles?

+0

Je suis surpris des modèles ne sont pas cachés par défaut. Les modèles exposent les composants internes de votre application et les fuites peuvent constituer un risque pour la sécurité. – Haakon

+0

Au lieu de demander pourquoi cacher les modèles je demanderais pourquoi les exposer? Pourquoi devrions-nous montrer la disposition de modèle de notre site Web au monde? – arg20