[Logback] Spring log 제외 및 설정하기
·
프로그램/JAVA
안녕하세요! 프뚜입니다. LogbackFilter를 통해 log를 컨트롤하려고 합니다. [개발 환경] - OS: Windows 10 64bit - JAVA: 1.8 # logback.xml 설정하기 [%F]%M\(%L\) : %m%n ./resources/logback.xml을 생성 후 filter연결을 합니다. # LogbackFilter Class 생성하기 public class LogbackFilter extends Filter { // 2022.12.30[프뚜]: 정규식을 사용하여 해당 Class Path 를 제외 private String[] excludeClassPathPattern = { "tistory.petoo.controller.([^/]+)", }; @Override public Fi..
[Filter] Spring Filter XSS 공격 방어하기 (ResponseFilter)
·
프로그램/JAVA
안녕하세요! 프뚜입니다. 이전에는 RequestFilter를 통해서 XSS 처리 후 데이터베이스에 insert, update등을 했습니다. 하지만 XSS 처리가 된 데이터를 비지니스로직에서 사용해야할 때가 발생되었습니다. 이후 RequestFilter가 아닌 ResponseFilter에서 처리하게 되었습니다. [개발 환경] - OS: Windows 10 64bit - JAVA: 1.8 # XSS Filter Class 생성하기 @Component public class XSSFilter implements Filter { // 2022.12.26[프뚜]: path 제외시킬 URI private String[] excludePathPatterns = { "/exclude1/*", "/exclude2/**/..
[Regex] JAVA replace 정규 문자 변경하기
·
프로그램/JAVA
안녕하세요! 프뚜입니다. replace, reaplceAll을 사용할 때 *, | , (, ), {, }, + 등의 문자를 찾아서 변경하려고 했으나, 정상적으로 변경되지 않습니다. replace는 regex를 가지고 변경하기 때문에 정규 문자로 사용되는 문자는 특수처리를 해주어야합니다. [개발 환경] - OS: Windows 10 64bit - JAVA: 1.8 # [ ]로 감싸주어야하는 정규식 문자 String value = "replace: *"; value = value.replaceAll("[*]", "asterisk"); print(value); value = "replace: +"; value = value.replaceAll("[+]", "plus"); print(value); value =..
[Regex] JAVA 정규식표현 사용하기
·
프로그램/JAVA
안녕하세요! 프뚜입니다. 개발을 하면서 정규표현은 어렵기 때문에 많은 관심을 갖지 않았던 것 같습니다.. 하지만, 정규표현식을 잘 써야 멋진 개발자가 될 수 있다고 생각합니다. [개발 환경] - OS: Windows 10 64bit - JAVA: 1.8 # Pattern Class 생성하기 Pattern pattern = Pattern.compile("정규식표현"); 다양한 메서드를 지원하고 있지만, compile 메서드를 가장 많이 사용하기 때문에 compile을 사용하겠습니다. # Matcher Class 생성하기 Matcher matcher = pattern.matcher("정규식표현에 체크 될 데이터"); 다양한 메서드를 지원하고 있기 때문에 상황에 맞춰서 사용하면 됩니다. 저는 가장 많이 사용하..
[AOP] SpringBoot AOP 사용하기
·
프로그램/JAVA
안녕하세요! 프뚜입니다. Spring에서 AOP(Aspect Oriented Programming)을 사용하려고 합니다. [개발 환경] - OS: Windows 10 64bit - JAVA: 1.8 # build.gradle 추가하기 // 2022.12.16[프뚜]: AOP implementation 'org.springframework.boot:spring-boot-starter-aop' # AOPConfig 설정하기 @Component @Aspect public class AOPConfig { // 2022.12.15[프뚜]: @Before(이전) > 어드바이스 타겟 메소드가 호출되기 전에 어드바이스 기능을 수행 // 2022.12.15[프뚜]: @After(이후) > 타겟 메소드의 결과에 관계없이(..
[JWT] Spring Interceptor 세팅 및 사용하기
·
프로그램/JAVA
안녕하세요! 프뚜입니다. 이전에 JWT 인증을 기준으로 Interceptor를 구현하려고 합니다. 이전 포스팅을 참조하시길 바랍니다. [JAVA] SpringBoot에서 JWT 설정 및 사용하기 (JJWT) [개발 환경] - OS: Windows 10 64bit - JAVA: 1.8 # Interceptor 설정하기 @RequiredArgsConstructor @Component public class JwtInterceptor implements HandlerInterceptor { private final JwtService jwtService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse resp..
[JAVA] SpringBoot에서 JWT 설정 및 사용하기 (JJWT)
·
프로그램/JAVA
안녕하세요! 프뚜입니다. 이전에 JWT 관련해서 포스팅했지만, 내용이 부족하고 소스가 없는 관계로 자세한 설명과 소스를 첨부하려고 합니다. [JWT] 토큰 환경 설정 및 생성 [JWT] 토큰 인증 및 payload 확인 [개발 환경] - OS: Windows 10 64bit - JAVA: 1.8 # build.gradle 설정하기 // 2022.12.15[프뚜]: JWT implementation("io.jsonwebtoken:jjwt:0.9.1") implementation('javax.xml.bind:jaxb-api:2.4.0-b180830.0359') # application.properties에 secretKey 넣기 # 2022.12.15[프뚜]: token key 유실 X pddu.jwt.ke..
[SpringBoot] Redis에서 keys VS scan 사용하기 (keys 대신 scan)
·
프로그램/JAVA
안녕하세요! 프뚜입니다. Redis는 Single Thread 아키텍처입니다. 블로킹의 영향으로 성능이 저하되고 장애가 발생할 수 있으므로 프로덕션 환경에서는 절대 사용하지 말아야한다고 알려져 있습니다. Redis > Keys는 Global Pattern으로 간단하게 모든 Key를 조회할 수 있고, 40ms 내에 100만 개의 key가 존재하는 데이터베이스를 스캔할 수 있다고 합니다. 하지만, 명령이 실행되는 도중에는 다른 모든 명령의 실행이 블로킹된다는 점 입니다. Redis > Scan은 non-blocking으로 비교적 안전하게 사용할 수 있습니다. 작은 단위로 증분 반복 순회를 하면서 데이터베이스를 스캔하기 때문입니다. [개발 환경] - OS: Windows 10 64bit - JAVA: 1.8 ..
프뚜