Ограничение безопасности белых списков в 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: Также, как бы я действительно проверить, работает ли решение или нет?
Спасибо
Ответы
Ответ 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
.