2010-06-14 10 views
6

मैं कुछ पुराने दोषों को ठीक कर रहा हूं और एक दोष के हिस्से के रूप में, मुझे यह सुनिश्चित करना होगा कि कुछ अनुरोध केवल जीईटी अनुरोध के बजाय जेएसपी पृष्ठ पर पोस्ट हो रहे हैं। एप्लिकेशन में एक ऐसा फॉर्म है जो किसी अन्य जेएसपी पेज पर डेटा जमा करता है (मुझे पता है कि यह गलत है और एमवीसी के खिलाफ है लेकिन इसे ठीक करने में बहुत देर हो चुकी है), क्योंकि यह एक जेएसपी पेज है, इसलिए हम अनुरोध पोस्ट कर सकते हैं या नहीं तो हम अनुरोध प्राप्त कर सकते हैं। किसी दुर्भावनापूर्ण उपयोगकर्ता के मामले में, फॉर्म पढ़ सकते हैं और http://host:80/somejsp.jsp?param=value&param=value आदि जैसे ब्राउज़र से अनुरोध प्राप्त कर सकते हैं। उस स्थिति में, यह उल्लंघन हो जाता है। मुझे यह सुनिश्चित करने की ज़रूरत है कि ऐसे जीईटी अनुरोध संसाधित नहीं किए गए हैं। ऐसा करने का एक तरीका है जेएसपी पृष्ठ में नीचे दिए गए चरणों को करने के लिए -जेएसपी पृष्ठ पर जीईटी अनुरोध कैसे अक्षम करें?

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

क्या ऐसा करने का कोई और तरीका है?

उत्तर

8

दो समाधान:

  1. *.jsp के <url-pattern> और GET की <http-method> (के रूप में मैकडोवेल ने सुझाव दिया है), जो हर किसी के लिए JSP फाइलों पर GET अनुरोधों को अवरुद्ध कर देगा पर एक खाली <auth-constraint> के साथ एक <security-constraint> जोड़ें:

    <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 बनाएं जोपर 01 की सुनता हैऔर मूल रूप से 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 गलतियाँ होगा पर एक ही copypaste की आवश्यकता नहीं है।

1

अनुरोध को प्रतिबंधित करने वाले अपने वेब.एक्सएमएल में security constraints जोड़ें।

+0

मेरे मामले में, उपयोगकर्ता पहले से ही प्रमाणित हैं। फिर भी हम जेएसपी पृष्ठों को जीईटी अनुरोधों का जवाब देने से रोकना चाहते हैं। – Shamik

संबंधित मुद्दे