All104 [Java] Jasypt 암호화 회사 솔루션에 보안 취약점 진단 리포트가 들어왔다. 그중에서도 Critical 등급으로 분류된 항목이 있었는데, 바로 설정 파일 암호화에 사용 중인 Jasypt의 암호화 알고리즘이 취약하다는 거였다. PBEWithMD5AndDES를 쓰고 있었는데, 이게 Weak Encryption으로 지적받았다. 이번에 이 문제를 해결하면서 Jasypt 암호화 알고리즘을 업그레이드한 과정을 정리해봤다. 보안 취약점 진단 결과등급 : Critical문제 : Weak Encryption기존 알고리즘: PBEWithMD5AndDES이 알고리즘은 MD5 해시와 DES 암호화를 사용하는데, 둘 다 현대 보안 기준에서는 너무 취약하다. Jasypt란?Jasypt (Java Simplified Encryption)는 Java 애플리.. 2025. 11. 23. [Tomcat] Tomcat 에러 페이지 설정 최근에 회사 솔루션에 보안취약점 리포트가 들어와서 패치를 하였는데 그중 하나가 에러 페이지에 Tomcat 정보가 보인다는 것이었다. 에러가 발생하였을 때 노출되는 에러 페이지에 Tomcat 버전이 그대로 보이면 공격자에게 힌트를 주는 셈이다. 이번엔 Tomcat에서 에러 페이지를 안전하게 설정하는 방법을 정리해봤다. Tomcat 정보 숨기기에러 메시지를 통해 노출되는 정보는 크게 두 가지다.1. 응답 헤더에 서버 종류를 노출 (예 : Server: Apache-Coyote/1.1)2. 에러 페이지에 서버의 정확한 버전 노출 (예 : Apache Tomcat/9.0.XX)이런 정보들은 공격자가 알려진 취약점을 공략하는 데 사용할 수 있다.1. 응답 헤더 정보 숨기기server="Web Server"이게 있.. 2025. 11. 17. [Java] var var란?Java 10에서 도입된 지역 변수 타입 추론 문법var로 선언하면 컴파일러가 우변(= 초기화 값)을 보고 정적 타입을 결정예약된 타입 이름(reserved type name)타입 위치에서만 특별한 의미가 있고, 그 외 위치(메서드명 등)에서는 식별자로 쓸 수 있다 어디서 사용하나지역 변수, for-each 변수, try-with-resources 리소스 변수, 람다 파라미터(Java 11 이상)에서 사용 가능.단, 필드(멤버 변수), 메서드 매개변수/반환 타입(람다 파라미터는 예외)에서는 사용 불가! 예시// 지역 변수: 우변으로 정적 타입이 확정var n = 1; // intvar l = 1L; // longvar name.. 2025. 8. 10. [Java] Jackson #1 1. Jackson이란?목적Java 객체를 JSON(또는 다른 포맷)으로 직렬화하거나, JSON을 Java 객체로 역직렬화하기 위한 오픈소스 라이브러리.특징빠른 성능(스트리밍 API 기반)풍부한 애노테이션과 플러그인 구조XML·YAML·CSV·CBOR·Smile 등 다양한 포맷 모듈 제공 2. 핵심 모듈 구조모듈Maven역할jackson-corecom.fasterxml.jackson.core:jackson-core저수준 파서/제너레이터(API)jackson-databindcom.fasterxml.jackson.core:jackson-databindObjectMapper 등 고수준 바인딩 기능jackson-annotationscom.fasterxml.jackson.core:jackson-annotation.. 2025. 8. 10. [DEV] Tomcat 서버를 윈도우 서비스로 등록 톰캣을 실행할 때 보통 catalina.bat run 명령어를 사용하지만, 서버를 재부팅할 때마다 매번 수동으로 실행하는 것은 너무너무 번거롭다.그럼 어떻게 자동으로 켜지게 할 수 있을까? 바로 윈도우 서비스로 등록하는 것이다! Windows Service(윈도우 서비스)Windows Service는 Windows 운영체제에서 백그라운드로 실행되는 프로그램 일반적인 응용 프로그램처럼 사용자 인터페이스(UI)는 없으며, 컴퓨터가 부팅될 때 자동으로 시작되거나 사용자가 로그인하지 않아도 동작할 수 있음!서버 애플리케이션이나 모니터링 도구처럼 항상 실행되어야 하는 프로그램을 운영할 때 매우 유용하다. 서비스 관리 명령어관리자 권한으로 cmd에서 실행# 서비스 목록 보기sc query# 서비스 시작sc star.. 2025. 7. 31. [DEV] DHCP DHCP란DHCP (Dynamic Host Configuration Protocol) - 동적 호스트 설정 프로토콜역할 : 네트워크에 연결된 기기에 IP 주소, 서브넷 마스크, 게이트웨이, DNS 서버 주소 등을 자동으로 할당.자동으로 설정해주기 때문에, 사용자가 일일이 IP를 수동으로 입력하지 않아도 된다.집이나 회사에서 와이파이만 연결하면 인터넷 되는 것, 다 DHCP 덕분.IP 충돌 방지, 관리 편의성, 확장성에서 매우 유리. 동작 방식단계메시지명설명1단계DHCPDISCOVER클라이언트가 네트워크에 접속하면서, DHCP 서버를 찾음2단계DHCPOFFERDHCP 서버가 사용 가능한 IP와 설정값을 제안함3단계DHCPREQUEST클라이언트가 특정 제안에 대해 요청4단계DHCPACK서버가 최종적으로 IP.. 2025. 7. 27. [Java] Java Remote Debugging 자바 원격 디버깅 #2 (JDWP 디버깅 옵션) JDWP 디버깅 옵션1. 디버깅 JVM 방식 (server) 모드 설명 server=yJVM이 디버거 요청을 수신하는 서버 역할 (일반적으로 많이 사용)server=nJVM이 디버거(IDE)로 접속을 시도함 (거의 사용 안 함) 2. JVM 실행 대기 여부 (suspend)모드설명 suspend=y 디버거가 연결되기 전까지 JVM 실행을 멈춤 (초기 진입 디버깅 시 사용) suspend=n 디버거 연결 여부와 무관하게 JVM 실행 (운영 환경에서 일반적으로 사용) 3. 디버깅 포트 지정 (address) 값 예시 설명 50055005 포트에서 디버거 연결 수신 (localhost 기본 바인딩)*:5005모든 IP에서 연결 수신 허용 (JDK 9 이상)127.0.0.1:5005로컬 루프백 전용.. 2025. 7. 24. [Java] Java Remote Debugging 자바 원격 디버깅 #1 (개념) 이미 배포된 어플리케이션에서 발생한 오류를 디버깅하고 싶다면 어떻게 해야 할까? JPDA란? JPDA (Java Platform Debugger Architecture) Java 애플리케이션을 외부에서 디버깅할 수 있도록 만들어진 디버거 통신 아키텍처즉, 디버거(IDE)와 JVM(실행 중인 애플리케이션) 간의 통신 프로토콜을 정의한 표준JDK에 기본 포함되어있음 JPDA의 구성 요소 (4 계층 아키텍처) 계층 구성 요소 설명 1️⃣JDI (Java Debug Interface)디버거 측에서 사용하는 고수준 API (IntelliJ, Eclipse 등이 이걸 사용)2️⃣JDWP (Java Debug Wire Protocol)디버거와 JVM 간의 통신 형식과 의미를 정의 (네트워크 프로토콜)3️.. 2025. 7. 17. [Oracle] ojdbc8.jar + interrupt 함수 = Socket read interrupted Oracle DB로 기동 된 서버의 웹소켓을 호출하는 부분에서 알 수 없는 로그와 함께 에러가 발생하였다. 에러 내용org.springframework.dao.DataAccessResourceFailureException: PreparedStatementCallback; SQL [INSERT INTO SPRING_SESSION_ATTRIBUTES (SESSION_PRIMARY_ID, ATTRIBUTE_NAME, ATTRIBUTE_BYTES) VALUES (?, ?, ?)]; IO 오류: Socket read interrupted; nested exception is java.sql.SQLRecoverableException: IO 오류: Socket read interrupted 에러 파악사용자가 기능을.. 2025. 7. 15. 이전 1 2 3 4 ··· 12 다음