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
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é.)
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
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
.