Подтвердить что ты не робот

Ограничение безопасности белых списков в web.xml

Я использую 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 фрагмента, я буду признателен, если кто-то может предоставить мне часть счетчика whitelisitng для выше xml.

EDIT: Также, как бы я действительно проверить, работает ли решение или нет?

Спасибо

4b9b3361

Ответ 1

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

<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 для всех. (Я не пробовал.)

Ответ 2

Новая функция 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

Небольшое изменение принятого ответа (установить 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.