Liste blanche de la sécurité de la contrainte dans le web.XML

J'utilise Tomcat pour mon application Struts2. web.xml a certaines entrées comme indiqué ci-dessous:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>restricted methods</web-resource-name>
        <url-pattern>/*</url-pattern>
        <http-method>PUT</http-method>
        <http-method>DELETE</http-method>
        <http-method>TRACE</http-method>
    </web-resource-collection>
    <auth-constraint />
</security-constraint>
<security-constraint>
   <web-resource-collection>
       <web-resource-name>no_access</web-resource-name>
       <url-pattern>/jsp/*</url-pattern>
   </web-resource-collection>
   <auth-constraint/>
</security-constraint>
    <security-constraint>
   <web-resource-collection>
       <web-resource-name>no_access</web-resource-name>
       <url-pattern>/myrrunner/*</url-pattern>
   </web-resource-collection>
   <auth-constraint/>
</security-constraint>

Comment puis-je changer les parties de la liste noire ci-dessus pour n'utiliser que la partie de la liste blanche... Par exemple, au lieu de la liste noire PUT, DELTE méthodes http, je dois whitelist d'autres méthodes, mais je ne suis pas sûr de la syntaxe de whitelisting eux et quelles méthodes pour les whitelist.

Pour mon ci-dessus web.xml snippet, j'apprécierai si quelqu'un peut me fournir whitelisitng contre-partie ci-dessus xml.

modifier: aussi, comment pourrais-je vraiment vérifier si la solution fonctionne ou non?

Merci

19
demandé sur kenorb 2011-11-09 22:21:21

3 réponses

je voudrais essayer le suivant:

<security-constraint>
    <web-resource-collection>
        <url-pattern>/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <!-- no auth-constraint tag here -->
</security-constraint>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>restricted methods</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
   <auth-constraint/>
</security-constraint>

Le premier security-constraint n'a pas de auth-constraint, donc les méthodes GET et POST sont disponibles pour n'importe qui sans connexion. La seconde restreint les autres méthodes http pour tout le monde. (Je n'ai pas essayé.)

19
répondu palacsint 2014-12-11 06:08:45

nouvelle fonctionnalité de Java EE 6 qui simplifie la configuration de sécurité des applications. Vous pouvez maintenant utiliser les méthodes HTTP autorisées whitelist versus blacklist dans votre site web.xml:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Disable unneeded HTTP methods by 403 Forbidden them</web-resource-name>
        <url-pattern>*</url-pattern>
        <http-method-omission>GET</http-method-omission>
        <http-method-omission>HEAD</http-method-omission>
        <http-method-omission>POST</http-method-omission>
    </web-resource-collection>
    <auth-constraint />
</security-constraint>

Référence: https://blogs.oracle.com/nithya/entry/new_security_features_in_glassfish

8
répondu aviundefined 2014-12-11 06:08:22

un léger ajustement à la réponse acceptée (mettre le url-pattern dans le deuxième security-constraint pour la carte à la valeur par défaut de la servlet "/") fonctionne pour JBoss et Weblogic mais pas pour Websphere:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Allowed methods</web-resource-name>
        <url-pattern>/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <!-- no auth-constraint tag here -->
</security-constraint>
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Restricted methods</web-resource-name>
        <url-pattern>/</url-pattern>
    </web-resource-collection>
    <auth-constraint />
</security-constraint>

avec la configuration des contraintes de sécurité ci-dessus, Je ne sais pas pourquoi Websphere autorise toutes les méthodes HTTP, alors que JBoss et Weblogic n'autorisent que GET et POST.

2
répondu mendozal 2016-04-19 20:28:10