본문 바로가기

spring14

[Spring] Gateway - 해외 IP 차단(필터링) Spring Cloud Gateway - 해외 IP 차단이전 포스팅에서 홈서버로 들어오는 Request 중 해외 IP 로 요청한 경우는 차단(Block) 했었다고 언급만 했었다. 도메인과 Reverse Proxy Server 를 연결 한 이후부터 서버 IP 가 공격자들에게 노출되었는지 매시간 수많은 공격들이 들어오고 있던 상황이었다. (SQL Injection, Brute Force, IDOR(Insecure Direct Object Reference 등등 ....)나의 서버의 경우 해외에서 수요가 있는것도 아니고, 국내에서만 유효하면 됬기에 해외 IP 차단을 계획했다.  홈서버 아키텍처 확인하기  GeoIP2 라는 국가별 IP 를 확인할 수 있는 오픈소스솔루션을 사용할 예정이다.Reverse  Prox.. 2025. 4. 2.
[Spring Boot] @Qualifier 무시 오류(Lombok @RequiredArgsConstructor) @Qualifier 무시 오류(Lombok @RequiredArgsConstructor)라이브러리 개발도중 발생한 문제이다. 우선 Bean 과 의존성 주입에 대해서 간략하게 살펴보도록 하자. Spring IoC Container 는 Bean 을 생성,관리 하여 의존성 주입을 대신 해준다.다만 Bean 으로 등록하게 될 타입이 여러개가 존재한다면 개발자가 어떤 Type 을 사용할 것인지 명시해 주어야 한다. // Interfacepublic interface ServiceTarget{}// Impl 1@Servicepublic class TargetImpl implements ServiceTarget {}// Impl 2@Servicepublic class TargetImpl2 implements Serv.. 2025. 2. 5.
[Spring boot] Spring Boot 라이브러리(Library) 개념 및 만들기(1) Spring Boot 라이브러리(Library) 개념 및 만들기(1)web, application 을 개발하다보면 라이브러리(Library) 라는 말을 자주 듣게 되고, 거의 필수적으로 사용하게 된다.필자는 여러가지 모듈들에 반복적이고 공통적으로 들어가는 기능을 대체하기 위해 라이브러리를 만들기 위해 공부했던 내용들을해당 글에 담았다. 그럼 라이브러리가 어떤 개념인지, 어떤방법으로 만들고 적용 할 수 있는지에 대해서 아래에 설명하겠다.  1. 라이브러리(Library) 란?라이브러리(Library) 는 공통적인 기능을 재사용하기 위해 별도로 분리된 코드 모음(모듈)이다.여러개의 프로젝트, 모듈에서 공통적으로 쓰이는 코드를 반복적으로 작성하지 않고, 공통 모듈로 만들어서 필요한 모듈에서 의존성 형태로 가져.. 2024. 12. 27.
[ElasticSearch] 버전별 Spring Boot 설정 변화 및 정리 [ElasticSearch] 버전별 Spring Boot 설정 정리- 최근의 IT 를 보게되면 고성능 고효율의 하드웨어, 그리고 고수준의 소프트웨어들이 사용됨에 따라 수많은 데이터들이 생성되게 되었다.이런 빅데이터를 실시간으로 처리하고 검색, 분석하는 능력이 중요해짐에 따라 수많은 솔루션들이 나오게 되었다. 그 중 ElasticSerach 는 빅데이터 처리, 실시간 로그분석 및 텍스트 검색에 중점을 두었다. ElasticSearch는 이런 장점을 기반으로 APM(애플리케이션 성능 모니터링), 데이터 분석, 검색어 실시간 자동 완성 등장점을 살린도구로 자리잡았다. 그렇기에 ElasticSearch 를 적용하기위해서 공부를 하는 사람들이 많이 보이는 추세이다.다만 필자가 Spring boot 와의 연동을 위.. 2024. 10. 17.
[Spring Boot]Jasypt 원리 및 사용방법(yml 설정 암복호화, Boot 3.x^) +String Util Class Jasypt 암복호화 라이브러리프로그래밍 공부를 하고 있는 사람들이라면, 보안에 관련된 수많은 얘기들을 듣고는 한다. 각종 정보들은 보안에 신경써야 한다고 말이다. (DB 접속정보, 사용자 정보, 파라미터 등등)서버간 통신시 암호화가 필요한 경우 라이브러리를 사용하기도 하고, 직접 암복호화 유틸을 만들어서 사용하기도 한다. 우리는 yml 의 DB 정보에 대해서 암호화를 진행해보고, 원리를 간단하게 살펴 보도록 하겠다. 공식문서를 살펴보며 유틸이나, 다른 활용방법에 대해서도 보면 좋을것 같다. 해당글에서는 다루지 않겠다.http://www.jasypt.org/general-usage.html 암호화에 대한 정보는 아래의 글에서 확인!https://lucas-owner.tistory.com/70 AES-25.. 2024. 8. 14.
[Java & Spring] Version 비교 방법 - version4j Spring (Java) Version 비교 방법 - version4j다양한 상황에서 버전 체크, 비교를 해야하는 경우가 존재한다. git, 앱 버전, java, 자체 프로그램 버전 등등,,  1. Version 이란? version 은 특정 매체에서 제작, 또는 수정이 이루어질때의 제작되거나, 수정된 각각의 판본을 뜻한다.소프트웨어에서의 버전은 수정사항, 기능의 추가사항, 버그수정 등 다양한 작업이후 배포될때 각각의 의미에 맞는 버전을 올리고 배포 작업이 이루어 지게 된다.  Version 은 (.) dot(점) 을 기준으로 구분되며, 다음과 같은 순서에 의해 정의되어있다.Major Version . Minor Version . Build or Maintenance Version = 1.0.1 Majo.. 2024. 6. 25.
AES-256 - Encrypt(암호화) For Java 얼마전, 외부 서비스 업체에서 제공하는 데이터를 DB 에 적재해야 하는 신규 기능 개발이 있었고,필수 요구사항중에서 'AES256 암호화 필수 (Base64)' 항목이 존재 했고 설계,분석,개발 과정에서 알게된 내용을 정리한다.  해당 글에서는 AES/CBC/PKCS5Padding 방식으로 Java 테스트 코드를 구현했다.  요구사항 및 Flow 1. 외부 업체 -> 관리서버 API 요청 (필수 파라미터 3개, 전부 암호화) 2. 요구 데이터 응답(암호화) 3. 응답 데이터 기반, 데이터 생성 4. Batch Task 로 데이터 Receive 및 DB 적재 해당 요구사항을 만족하기 위해 AES256(Base64) 암호화에 대해 알아보자.   1. AES256 이란?AES (Advanced Encrypti.. 2024. 5. 26.
[SpringBoot] RestTemplate - 카카오 openAPI 연동하기(Translation, 번역기) 서론 - Spring Boot 기반의 RestTemplate 공부를 하며 local에 서버를 2개 띄워서 테스트 하는것 보다는, openAPI를 적용해보고 싶던 와중 kakao 에서 제공하는 Translate (번역) API 를 찾게 되었고 연동해보았다. - 예전에는 단순히 카카오 개발자 사이트에서, Test용 어플리케이션 등록 + Api Key로 사용이 가능했지만, 2023.03.13일 현재 kakao i cloud라는 시스템을 사용하는것으로 조금 바뀌어 있다. (호출 방식, key 같은것들이 다름.) 혹시나 하는 마음에 이전버전의 API 호출 방식을 적용해봤는데 정상적으로 동작이 되었다. 목적은 어디까지나 RestTemplate를 사용한 API호출 이었기 때문에, 예전방식으로 진행했다. * 시작전 유.. 2023. 3. 13.
[Spring] Spring-Container(IoC 컨테이너)에 관리되는 Bean 목록 확인 Spring Container가 관리하는 Bean 목록 확인 하기. - Spring의 Bean은 Spring-Container(IoC Container)가 관리하고 있으며, 객체 생성, 객체 주입 같은 것들을 개발자가 아닌 Container에서 수행하게 된다. - Spring IoC, DI, Container 에 관한 개념을 좀 더 알고싶다면 아래 링크에서 공부하고 와도 좋을것 같다. https://lucas-owner.tistory.com/39 [Spring] Spring-Container, IoC, DI, Singleton 개념 정리 목차 IoC 란? Spring Container (스프링 컨테이너) DI(Dependency Injection) 란? Singleton 패턴이란? IoC 란? IoC 란.. 2023. 2. 8.