2010-01-22 3 views
1

J'ai une application jsp/struts à mettre à niveau.Meilleure façon de protéger l'URL afin que seule la partie définie puisse interagir entre elles

Actuellement, nous avons seulement 1 système web (branche) et maintenant je dois mettre à niveau et construire un autre système web qui représente le siège. HQ et les branches sont domaine différent. HQ peut voir 4 branches dans la page HQ. Nous devons nous connecter pour accéder au siège et aux succursales. Si HQ voulez voir les détails dans la branche A, nous pouvons cliquer sur le lien, comme

Total attack : <a href="https://www.branch_A.com/xxx/sss/?sss=333">105</a> 

Ma question est de savoir comment protéger l'URL afin que la communication ne peut se faire par serveur HQ et en toute sécurité branch_A.com ? Si nous utilisons cette URL d'un autre IP, il devrait afficher un message non autorisé.

Je l'ai fait pour contrôler l'IP en utilisant request.getRemoteAddr() dans la branche, mais ce n'est pas assez sécurisé.

Quelqu'un peut-il m'aider à donner des idées sur la façon de protéger cette URL?

Répondre

2

Nous devons identifier

Vous disposez déjà d'un système de connexion. Comme vous posez déjà cette question, cela ressemble à un système de connexion d'origine, sinon vous pourriez simplement avoir configuré l'authentification gérée par conteneur pour vérifier certains modèles d'URL pour tous les utilisateurs/rôles connectés.

Vous devez simplement vérifier l'utilisateur connecté chaque fois que des modèles d'URL spécifiques sont demandés. Un filtre est parfaitement adapté pour cela. Supposons que votre système de connexion Homegrown met l'utilisateur connecté dans le cadre de la session, le filtre alors juste besoin de tester sa présence:

if (((HttpServletRequest) request).getSession().getAttribute("user") != null) { 
    chain.doFilter(request, response); // User is present. Just continue request. 
} else { 
    ((HttpServletResponse) response).sendError(HttpServletResponse.SC_UNAUTHORIZED); // Error 401. 
} 

Plan du filtre à web.xml sur une url-pattern correspondant aux demandes que vous aimeriez être filtré sur l'utilisateur connecté. Vous pouvez même aller plus loin en ajoutant un rôle utilisateur et si l'utilisateur connecté a le bon rôle pour visiter l'URL.

0

Je regarderais en utilisant des certificats SSL de client (et de serveur). Il existe des guides pour le faire sous Apache et IIS (ou utiliser un moteur de recherche pour n'importe quelle configuration que vous avez)

1

Utilisez .htaccess pour restreindre l'adresse IP entrante? ou config dans httpd.conf/virtual host. même pare-feu?

STH comme:

order allow,deny  
deny from 123.45.6.7 
deny from 012.34.5. 
allow from all 
+0

Il semble qu'une autre ip ne puisse pas y accéder si nous contrôlons l'utilisation de ce fichier .htaccess. Plus d'infos ... La branche elle-même peut accéder à partir de n'importe quel endroit (seulement accéder à cette branche). Mais à partir du QG, je vais mettre un drapeau/statut dans l'URL pour dire que c'est l'accès du QG –