2010-05-19 19 views
5

मैं web.xml पर कुछ कॉन्फ़िगरेशन के साथ एक आईपी पता कैसे ब्लॉक कर सकता हूं?web.xml का उपयोग कर आईपी पते को कैसे अवरुद्ध करें?

क्या मुझे फ़िल्टर चाहिए? मैं एक कैसे कार्यान्वित कर सकता हूं?

+1

मुझे व्यक्तिगत रूप से लगता है कि यह मेजबान अनुप्रयोग सर्वर या नेटवर्क स्तर (फ़ायरवॉल) में व्यवस्थापक स्तर पर किया जाना चाहिए। –

उत्तर

6

आप यह विशुद्ध रूप से config के माध्यम से web.xml में कोई ऐसा नहीं कर सकते। हालांकि, ऐसी चीज को लागू करने के लिए एक सर्वलेट फ़िल्टर एक अच्छी जगह होगी।

Filter इंटरफ़ेस फिल्टर श्रृंखला मंगलाचरण के हिस्से के रूप HttpServletRequest की आपूर्ति, और कहा कि आप से क्लाइंट का IP पता प्राप्त कर सकते हैं (getRemoteAddr का प्रयोग करके), और अनुमति दी पतों की सूची है कि की तुलना करें।

वैकल्पिक रूप से, आपका विशिष्ट ऐप्स सर्वर मालिकाना स्तर पर आईपी फ़िल्टरिंग का समर्थन कर सकता है, लेकिन यह आपको उस कंटेनर में लॉक करता है (जो आपके लिए कोई समस्या हो सकती है या नहीं)।

+0

टॉमकैट 7 में यह web.xml पर हो सकता है। देखें http://www.jvmhost.com/articles/block-ip-address-apache-tomcat-filter –

3

आप web.xml का उपयोग करके आईपी पते को अवरुद्ध नहीं कर सकते हैं। यह Webserver, कंटेनर या अनुप्रयोग सर्वर स्तर पर किया जाना चाहिए।

यदि आप टोमकैट का उपयोग कर रहे हैं, तो आपको आईपी पते को ब्लॉक करने के लिए वाल्व विनिर्देश का उपयोग करने की आवश्यकता है। अधिक जानकारी के लिए निम्न संसाधन

http://tomcat.apache.org/tomcat-5.5-doc/config/valve.html का उपयोग कर पाया जा सकता है

http://hcmc.uvic.ca/blogs/index.php?blog=30&p=2658&more=1&c=1&tb=1&pb=1

2

फ़िल्टर कॉन्फ़िगरेशन और पाठक को व्यायाम के रूप में छोड़ा गया सभी पता लगाना।

import javax.servlet.*; 
import java.io.IOException; 

public class BlackListFilter implements Filter 
{ 
    private String blacklistedip; 

    @Override 
    public void init(final FilterConfig filterConfig) throws ServletException 
    { 
     this.blacklistedip = filterConfig.getInitParameter("blacklistedip"); 
    } 

    @Override 
    public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain filterChain) throws IOException, ServletException 
    { 
     if (!request.getRemoteAddr().equals(this.blacklistedip)) 
     { 
      filterChain.doFilter(request, response); 
     } 
    } 

    @Override 
    public void destroy() 
    { 
     // nothing 
    } 
} 
0

मैं सामान्य रूप से एक रिवर्स-प्रॉक्सी वेब सर्वर के साथ इस प्राप्त होगा, लेकिन अगर तुम सच में अपने सर्वलेट में यह निर्धारित करना चाहते हैं, यह एक समस्या नहीं है ...

यहाँ आप बात करने के लिए एक उदाहरण है एक फ़िल्टर का उपयोग कर इसे प्रबंधित करने की दिशा में।

http://www.java2s.com/Code/Java/Servlets/IPFilter.htm

नोट कि यह does not web.xml प्रविष्टियों, जो कुछ इस तरह दिखेगा में शामिल हैं:

<filter> 
     <filter-name>IPFilter</filter-name> 
     <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>IPFilter</filter-name> 
     <servlet-name>MyServlet123</servlet-name> 
    </filter-mapping> 

आप स्प्रिंग उपयोग कर रहे हैं (ऊपर फिल्टर श्रेणी के रूप में), आप समाधान को सरल बनाने के लिए एक स्प्रिंग डेलीगेटिंग फ़िल्टररप्रोक्सी का उपयोग करना चाह सकते हैं, और अपने फ़िल्टर को अन्य अनुप्रयोगों तक पहुंच सकते हैं, अपने एप्लिकेशन कॉन्टेक्स्ट (संभावित रूप से गुणों या यहां तक ​​कि डेटाबेस से क्लाइंट आईपी पते लोड करें):

http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/web/filter/DelegatingFilterProxy.html

एचएच

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