2010-06-14 6 views
6

Estoy solucionando algunos defectos antiguos y como parte de un defecto, debo asegurarme de que algunas solicitudes solo se envíen por CORREO a la página JSP en lugar de una solicitud GET. La aplicación tiene un formulario que envía datos a otra página JSP (sé que está equivocado y en contra de MVC, pero es demasiado tarde para solucionarlo), ya que es una página JSP, por lo que podemos enviar la solicitud o podemos OBTENER la solicitud. En caso de un usuario malintencionado, puede leer el formulario y enviar la solicitud como un GET desde el navegador como http://host:80/somejsp.jsp?param=value&param=value etc. En ese caso, se convierte en una violación. Necesito asegurarme de que tales solicitudes GET no se procesen. Una forma de hacerlo es llevar a cabo los siguientes pasos en la página JSP -Cómo deshabilitar las solicitudes GET a la página JSP?

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

¿Hay alguna otra manera de hacerlo?

Respuesta

8

dos soluciones:

  1. Añadir un <security-constraint> con un vacío <auth-constraint> en una <url-pattern> de *.jsp y <http-method> de GET que bloqueará GET solicitudes de archivos JSP a todo el mundo (como lo sugiere 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. Crea un Filter que escucha en un <url-pattern> de *.jsp y hace básicamente lo siguiente en el método doFilter().

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

No hay necesidad de CopyPaste el mismo sobre todas las páginas JSP que sólo sería propenso a errores IllegalStateException: response already committed.

1

Agregue security constraints a su web.xml que prohíbe la solicitud.

+0

En mi caso, los usuarios ya están autentificados. Todavía queremos evitar que las páginas JSP respondan a las solicitudes GET. – Shamik

Cuestiones relacionadas