2010-06-14 13 views
6

Naprawię niektóre stare defekty i jako część jednej wady, muszę się upewnić, że niektóre żądania są POST tylko do strony JSP zamiast żądania GET. Aplikacja ma formularz, który przesyła dane na inną stronę JSP (wiem, że jest błędna i przeciwko MVC, ale jest za późno, aby to naprawić), ponieważ jest to strona JSP, więc możemy POST wniosek, lub możemy uzyskać żądanie. W przypadku złośliwego użytkownika, można odczytać formularz i wysłać żądanie jako GET z przeglądarki, np. http://host:80/somejsp.jsp?param=value&param=value itd. W takim przypadku staje się ono naruszeniem. Muszę się upewnić, że takie żądania GET nie są przetwarzane. Jednym ze sposobów jest wykonanie poniższych kroków na stronie jsp -Jak wyłączyć żądania GET na stronie JSP?

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

Czy jest jakiś inny sposób na zrobienie tego?

Odpowiedz

8

dwa rozwiązania:

  1. Dodać <security-constraint> z pustym <auth-constraint> na <url-pattern> z *.jsp i <http-method> z GET który będzie blokować GET żądania dotyczące plików JSP dla każdego (jak sugeruje McDowell):

    <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. Utwórz Filter, który nasłuchuje na <url-pattern> z *.jsp i wykonuje zasadniczo następujące czynności w metodzie doFilter().

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

Nie trzeba CopyPaste taka sama na wszystkich stronach JSP, które byłyby tylko podatne na IllegalStateException: response already committed błędów.

1

Dodaj plik security constraints do pliku web.xml, który blokuje żądanie.

+0

W moim przypadku użytkownicy są już uwierzytelnieni. Nadal chcemy uniemożliwić stronom JSP reagowanie na żądania GET. – Shamik

Powiązane problemy