본문 바로가기
JSP

[JSP] 18. 필터를 사용해 특정 IP 차단시켜보기

글: Song hyun 2024. 7. 3.
728x90
반응형

[JSP] 18. 필터를 사용해 특정 IP 차단시켜보기

package com.tenco.filters;

import java.io.IOException;

import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.FilterConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;


/*
 * 1. Filter 구현
 * 2. URL 패턴 설정 (web.xml 파일에서 설정할 예정)
 * 
 */
public class IPBlockFilter implements Filter{

// 192.168.0.48 <-- 내 아이피
// 차단할 IP 대역의 접두사
private static final String BLOCKED_IP_PREFIX = "192.168.0.48";

@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("IPBlockFilter 초기화");
}

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// 전처리 - 요청자의 IP를 확인하고 싶다!
String remoteIP=request.getRemoteAddr();
System.out.println("Request from IP : "+remoteIP);

// 차단 시킬 코드 작성
if(remoteIP.startsWith(BLOCKED_IP_PREFIX)) {
System.out.println("영준이는 여기서 걸림");
response.setContentType("text/plain; charset=UTF-8");
response.getWriter().println("Access Denied !!");
response.getWriter().println("너는 못 지나간다~~");
return;
}
chain.doFilter(request,response);
}

}

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://jakarta.ee/xml/ns/jakartaee" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd" version="6.0">
  <servlet>
    <description></description>
    <display-name>HomeServlet</display-name>
    <servlet-name>HomeServlet</servlet-name>
    <servlet-class>com.tenco.controller.HomeServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>HomeServlet</servlet-name>
    <url-pattern>/HomeServlet</url-pattern>
  </servlet-mapping>
  <display-name>filterListenerEX</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <filter>
   <filter-name>IPBlockFilter</filter-name>
   <filter-class>com.tenco.filters.IPBlockFilter</filter-class>
  </filter>
  
</web-app>
728x90
반응형

'JSP' 카테고리의 다른 글

[JSP] 19. 리스너  (0) 2024.07.03
[JSP] 20. 세션과 리스너를 함께 사용하기  (0) 2024.07.03
[JSP] 17. 서블릿 필터와 리스너  (0) 2024.07.03
[JSP] 16.server.xml과 context.xml, web.xml  (0) 2024.07.03
[JSP] 15. 서블릿과 DB 연동  (0) 2024.07.03