Как отключить GET-запросы к странице JSP? - PullRequest
7 голосов
/ 14 июня 2010

Я исправляю некоторые старые дефекты и, как часть одного дефекта, мне нужно убедиться, что некоторые запросы относятся только к POST к странице JSP, а не к запросу GET.В приложении есть форма, которая отправляет данные на другую страницу JSP (я знаю, что это неправильно и по отношению к MVC, но слишком поздно, чтобы это исправить), так как это страница JSP, поэтому мы можем POST запрос или иначе мы можем получить GET запрос.В случае злоумышленника пользователь может прочитать форму и отправить запрос в виде GET из браузера, например http://host:80/somejsp.jsp?param=value&param=value и т. Д. В этом случае это становится нарушением.Мне нужно убедиться, что такие запросы GET не обрабатываются.Один из способов сделать это - выполнить следующие шаги на странице jsp -

if (request.getMethod().equals("GET")) {
   // reroute the user as it is not a valid req
}

Есть ли другой способ сделать это?

Ответы [ 2 ]

8 голосов
/ 14 июня 2010

Два решения:

  1. Добавьте <security-constraint> с пустым <auth-constraint> на <url-pattern> из *.jsp и <http-method> из GET, который заблокирует GET запрашивает файлы JSP для всех (как предложено Макдауэллом):

    <security-constraint>
        <display-name>Restrict GET requests on JSP files</display-name>
        <web-resource-collection>
            <web-resource-name>JSP files</web-resource-name>
            <url-pattern>*.jsp</url-pattern>
            <http-method>GET</http-method>
        </web-resource-collection>
        <auth-constraint />
    </security-constraint> 
    
  2. Создает Filter, который прослушивает <url-pattern> из *.jsp и выполняет в основномследуя методу doFilter().

    if (((HttpServletRequest) request).getMethod().equals("GET")) {
        ((HttpServletResponse) response).sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
    } else {
        chain.doFilter(request, response);
    }
    

Нет необходимости копировать одинаково на всех страницах JSP, которые могут быть подвержены только IllegalStateException: response already committed ошибкам.

1 голос
/ 14 июня 2010

Добавьте ограничения безопасности в ваш web.xml, запрещающие запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...