2010-06-14 24 views
6

Bazı eski kusurları düzeltiyorum ve bir kusurun parçası olarak, bazı isteklerin yalnızca bir GET isteği yerine JSP sayfasına POST olmasını sağladığından emin olmalıyım. Uygulama başka bir JSP sayfasına veri gönderen bir forma sahip (Ben yanlış olduğunu biliyorum ve MVC'ye karşı ama bunu düzeltmek için çok geç), çünkü bir JSP sayfası olduğundan, isteği POST edebiliriz veya başka bir şekilde isteği alabiliriz. Kötü niyetli bir kullanıcı olması durumunda formu okuyabilir ve isteği tarayıcıdan http://host:80/somejsp.jsp?param=value&param=value gibi bir GET olarak gönderebilir. Bu durumda, bir ihlal olur. Bu GET isteklerinin işlenmediğinden emin olmalıyım. bunu yapmak için başka bir yoluJS istek sayfasına GET istekleri nasıl devre dışı bırakılır?

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

var mı - yapmanın bir yolu, jsp sayfasında aşağıdaki adımları gerçekleştirmek için mi?

cevap

8

İki çözümleri:

  1. (McDowell tarafından önerilen) herkese JSP dosyaları üzerinde GET isteklerini engeller GET bir *.jsp ait <url-pattern> ve <http-method> üzerinde boş <auth-constraint> ile <security-constraint> ekleyin:

    <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. /01'yi dinleyen bir Filter oluşturun.ve temel olarak doFilter() yönteminde aşağıdakileri yapar.

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

sadece IllegalStateException: response already committed hatalar eğilimli olacağını tüm JSP sayfaları üzerinden aynı CopyPaste gerek yok.

1

Web.xml isteğinizi yasaklamak için security constraints ekleyin.

+0

Benim durumumda, kullanıcılar zaten doğrulanmışlardır. Yine de, JSP sayfalarının GET isteklerine yanıt vermesini engellemek istiyoruz. – Shamik

İlgili konular