본문 바로가기

개발지식44

[Security] 비밀번호를 안전하게 보관하는 법: Hash, Salt, 그리고 Key Stretching 이해 웹 서비스를 개발할 때 사용자들의 민감 정보 중 최우선으로 관리해야 하는 것은 비밀번호입니다. 현대 개인정보보호법 및 정보통신망법상 비밀번호는 DB에 그대로 저장하는 평문(Plaintext) 보관이 원천적으로 불법입니다. 그렇다면 해킹으로 데이터베이스 전체가 털리더라도 사용자의 실제 비밀번호를 알아낼 수 없도록 방어하는 암호화 매커니즘은 어떻게 구성될까요? 안전한 패스워드 저장을 위한 **Hash(단방향 해시), Salt(솔트), 그리고 Key Stretching(키 스트레칭)**의 개념과 작동 원리, 실제 코드 구현까지 상세하게 파헤쳐 보겠습니다.1. 단방향 해시 함수 (One-way Hash Function)단방향 해시 함수는 임의의 길이를 가진 메시지를 입력받아 고정된 길이의 해시값(다이제스트, D.. 2026. 7. 22.
[Docker] 도커 컨테이너를 가볍고 안전하게! 멀티 스테이지 빌드(Multi-stage Build) 가이드 도커(Docker)를 활용하여 애플리케이션을 배포하는 것은 현대 클라우드 네이티브 개발에서 선택이 아닌 필수가 되었습니다. 하지만 처음 도커 이미지를 빌드하다 보면 빌드용 컴파일러, 패키지 매니저의 무거운 캐시 파일, 소스코드 빌드 툴 등이 고스란히 최종 이미지에 포함되어 이미지 용량이 수백 메가바이트에서 기가바이트 단위로 기하급수적으로 커지는 현상을 겪게 됩니다. 이미지가 무거워지면 CI/CD 파이프라인의 배포 속도가 현저히 느려질 뿐만 아니라, 개발 단계에서 쓰이던 불필요한 라이브러리들이 상용 이미지 안에 잔존하여 해커들의 공격 표면(Attack Surface)이 넓어지는 보안상 치명적인 약점을 갖게 됩니다.이러한 이미지 비대화 문제와 보안 취약점을 완벽하게 해결하기 위해 도커에서 공식적으로 제공하는.. 2026. 7. 21.
[Java] 자바 21(Java 21) 가상 스레드(Virtual Threads) 도입 배경과 기존 스레드 모델 비교 자바 21(Java 21)에서 가장 주목받는 혁신 기능은 단연 **가상 스레드(Virtual Threads)**입니다. 가상 스레드는 전통적인 자바의 멀티스레딩 모델이 가지고 있던 근본적인 성능 병목과 복잡한 비동기 프로그래밍 모델의 한계를 동시에 극복하기 위해 프로젝트 룸(Project Loom)을 통해 도입되었습니다. 가상 스레드의 핵심 도입 배경과 기존 스레드 모델과의 아키텍처적 차이점을 알기 쉽게 분석해 봅니다. 오늘 이 포스트에서는 가상 스레드의 탄생 배경부터 내부 구조, 코드 예제, 그리고 실무 도입 시 고려해야 할 사항들까지 아주 상세하게 다루어 보겠습니다.1. 기존 자바 스레드 모델의 한계: 플랫폼 스레드 (Platform Threads)전통적인 자바의 스레드는 운영체제(OS)의 커널 스레.. 2026. 7. 19.
How to Parse JSON in Java Using Gson – A Complete Guide In modern Java development, working with JSON (JavaScript Object Notation) has become an essential task, especially when building APIs, web services, or working with third-party data. One of the most popular libraries for handling JSON in Java is Gson, developed by Google. In this article, we will explore how to parse JSON in Java using the Gson library. This guide is suitable for beginners and .. 2025. 4. 17.