Ограничение безопасности белого списка в web.xml - PullRequest
22 голосов
/ 09 ноября 2011

Я использую Tomcat для своего приложения Struts2.В web.xml есть определенные записи, как показано ниже:

<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>

Как я могу изменить части из черного списка, чтобы использовать только часть из белого списка ... Например, вместо методов черного списка PUT, DELTE httpМне нужно добавить в белый список другие методы, но я не уверен, синтаксис их внесения в белый список и какие методы их внесения в белый список.

Для моего вышеприведенного web.xml фрагмента, я буду признателен, если кто-нибудь может предоставить мне белую счетную часть для выше xml.

РЕДАКТИРОВАТЬ: Кроме того, как я действительно проверю, действительно лиРешение работает или нет?

Спасибо

Ответы [ 3 ]

20 голосов
/ 10 ноября 2011

Я бы попробовал следующее:

<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>

Первый security-constraint не имеет auth-constraint, поэтому методы GET и POST доступны всем без входа в систему. Второй ограничивает другие методы http для всех. (Я не пробовал.)

10 голосов
/ 22 октября 2013

Новая функция Java EE 6, которая упрощает настройку безопасности приложений. Теперь вы можете использовать белый и черный список разрешенных методов HTTP в вашем файле 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>

Ссылка: https://docs.oracle.com/cd/E19798-01/821-1841/bncbk/index.html#6nmq2cpkb

3 голосов
/ 19 апреля 2016

Небольшая настройка принятого ответа (установите url-pattern во втором security-constraint для сопоставления сервлету по умолчанию "/") работает для JBoss и Weblogic, но не для 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>

С приведенной выше конфигурацией ограничений безопасности я не уверен, почему Websphere разрешает все методы HTTP, в то время как JBoss и Weblogic допускают только GET и POST.

...