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 |