[Problème] Passage servlet -> JSP, et mappage web.xml

Passage servlet -> JSP, et mappage web.xml [Problème] - Java - Programmation

Marsh Posté le 28-09-2003 à 16:40:46    

Bonjour, pour les besoins d'un serveur perso (Tomcat5 sous Linux) je me retrouve confronté à un problème.
 
Pour planter le décor, j'ai une application Java qui fonctionne de la manière suivante : une servlet récuppère toutes les requêtes (car mappée en /foo/* dans le web.xml). Après quelques traitements sans histoires par d'autres servlets, je voudrais passer la main à une JSP chargée de cracher le code XHTML au client.
 
La difficulté est que je voudrais interdire l'accès direct aux pages JSP depuis l'extérieur. J'ai commencé par placer les JSP dans un dossier {webapp}/foo/JSP, mais visiblement à cause du mappage /foo/* -> EntryServlet du web.xml, un  

Code :
  1. req.getRequestDispatcher("/foo/JSP/index.jsp" ).forward(req,res)


retombe (à cause du mappage du web.xml) sur la servlet EntryServlet. Pour info j'utilise ce mappage car je voudrais attaquer l'application avec des requêtes ayant des URI du type : /foo/logs/2003/09/28/fe0/txErrors
 
Si je place les JSP dans un dossier non mappé par le web.xml tous se passe bien, mais alors les JSP sont accessibles directement depuis l'extérieur  :/  
 
En bref, je veux empêcher mes JSP d'être accessibles depuis un appel direct de l'extérieur, tout en les ayant accessibles depuis une servlet (avec les méthodes forward ou include).

Reply

Marsh Posté le 28-09-2003 à 16:40:46   

Reply

Marsh Posté le 28-09-2003 à 20:01:59    

[:blueflag]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 28-09-2003 à 21:57:38    

premier truc à tester : est ce que ca marche si tu mets tes jsp dans le rep WEB-INF ? il me semble que c'est possible mais j'en suis vraiment pas sûr ...
 
2e solution qui marche à coup sûr :  
tu créés un rep (/jsp/ par exemple) dans lequel tu mets tes jsp. Tu écris un filtre (javax.servlet.ServletFilter je crois) que tu mappe sur le rep jsp (/jsp/*). Ce filtre vérifira l'existence de l'attribut "javax.servlet.forward.request_uri". Si il n'existe pas, la requête vers la JSP est directe => tu retourne un 404 ou un accessdenied (je sais plus le code). Si il est présent, ca signifie que la requête a été dispatchée => le filtre fait l'execution normale ...
 
3e solution :
tu mets un serveur web (apache par exemple) devant et c'est lui qui interdit l'accès au répertoire /jsp


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 29-09-2003 à 09:32:33    

benou a écrit :

Si il n'existe pas, la requête vers la JSP est directe => tu retourne un 404 ou un accessdenied (je sais plus le code).  


 
403


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 29-09-2003 à 11:19:10    

mettre les jsp dans le web-inf, ça marche.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 29-09-2003 à 12:02:20    

Merci pour ces réponses  ;)
 
Je vais essayer de partir sur les filtres, ça se sera l'occasion d'essayer qq chose de nouveau (j'ai cru en voir dans les examples de sources).
 
Pour la 3ème solution, je n'avais pas pensé à utiliser le mod_rewrite d'Apache, shame on me :non:  :D  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed