목록전체 글 (82)
붕어의 개발 기록
시스템을 개발하다 보면 예외 처리는 피할 수 없는 영역이다. 일반적으로는 try catch를 사용하지만, 규모가 커질수록 예외의 종류가 많아고 처리 로직이 분산되면서 코드가 지저분해지고 복잡해진다.try {…} catch (IllegalArgumentException e) {...} catch (NullPointerException e) {...} catch (Exception e) {...}위와 같은 코드가 여러 컨트롤러와 서비스에서 동일하게 반복되면 유지보수, 가독성, 예외 응답면 에서 문제가 발생한다. Spring에서는 이러한 문제를 해결하기 위해서 전역 예외 처리를 제공한다.GlobalExceptionHandlerSpring의 전역 예외 처리는 @ControllerAdvice(@RestContro..
Web Server정적인 리소스를 제공하는 서버로 파일을 그대로 전달해주는 서버HTMLCSSJS이미지, 동영상대표 예시NginxApache HTTP ServerWeb Server는 프로그램을 실행하지 않고, 이미 준비된 정적 파일을 클라이언트에게 그대로 전달하는 역할을 한다.WAS(Web Application Server)웹 애플리케이션을 실행해주는 서버 프로그램으로, 요청을 받아 코드를 실행하고 그 결과를 만들어주는 서버로그인 처리DB 조회계산API 응답(JSON)대표 예시Apache TomcatJBossWebLogicWAS는 단순 파일 전달이 아니라, 비즈니스 로직을 실행하고 동적인 응답을 생성한다.Web Server + WAS 기본 구조브라우저 ↓Web Server (Nginx) ↓WAS (To..
최근에 주변에서 우연하게 동시에 여러명에게 로그인과 관련된 질문들을 받았습니다. “jwt는 암호화가 아니라 서명인데 왜 꽁꽁 숨겨야하나요?”“자동 로그인을 JWT로 구현하면 토큰은 어떻게 관리해야 하지?”“jwt로 토큰을 만들어서 로컬 스토리지에 보관하면 되나?”“JWT를 어떻게 만들어서 인증 절차를 어떻게 할지”“토큰을 만든다 해도 이걸로 어떻게 사용자 식별을 하는거지?” 저 같은 초보 개발자들이 웹 서비스의 로그인 구현을 한다! 하면 무조건 한 번쯤은 마주치게 되는 키워드가 JWT(Json Web Token)입니다. 하지만 막상 사용하려고 하니 위의 질문들과 같은 고민들이 생깁니다. 처음 구현하는 입장에서는 이론부터 익히려니 막막했던 기억이 있고, 관련 질문을 받아서 대답해주다가 해당 내용들에 대해서..
오랜만에 들어간 사이트에서 당신은 로그인을 하려고 합니다. 하지만 기억이 나지 않는 비밀번호..... 우리는 사이트마다 각각의 기준에 맞춰 수많은 비밀번호를 생성하고 기억하고 관리해야합니다. 하지만 어떤 사이트에서 어떤 비밀번호를 사용하였는지 헷갈리기 일쑤이고, 결국 비밀번호 찾기를 누르게 됩니다. 이러한 불편한 점을 해결하기 위해 비밀번호 없는 로그인이란 개념이 점차 등장하게 됩니다. 오늘은 비밀번호가 없는 인증 PassKey와 WebAuthn에 대해 알아보겠습니다.TPM(Trusted Platform Module)키, 서명, 해시값 물리적 보관 장소OS 보안 저장소는 모두 TPM 사용기능 설명키 생성 및 저장하드웨어 내부에서 생성된 키는 외부로 절대 유출되지 않음암호 연산 지원RSA, ECC, HMA..
NAS가 쓰고 싶어졌습니다. 그래서 하드 구성을 어떻게 할까 고민하다보니 옛날옛적 정보처리기사를 공부할 때 봤던, RAID 개념이 나오더군요... 드디어 공부한걸 써먹을때가 왔구나 하고 레이드에 대한 정리글을 작성했습니다. RAID란?Redundant Array of Independent Disk여러개의 디스크를 물리적 혹은 논리적으로 하나의 디스크로 묶어서 사용하는 저장 방법 RAID 레벨 데이터 분산 방식필요한 하드 개수패리티(Parity) 저장고장 시 데이터 복구 가능 여부읽기/쓰기 속도유효 용량 비율장점/단점일반적 사용 사례데이터 저장 방식RAID 0 (Striping)블록 단위 스트라이핑2개 이상❌ 없음❌ 불가능 — 한 개만 고장나도 전체 데이터 손실🔼 매우 빠름/🔼 빠름100%고속 데이터..
패리티비트목적오류 검출이 목적 (detEction).데이터 비트들의 합(1의 개수)을 기준으로 짝수 또는 홀수가 되도록 맞춘다.방법 (짝수/홀수 패리티)데이터 비트들의 1의 개수를 세서 짝수(또는 홀수)가 되도록 패리티 비트를 1개 붙임.짝수 패리티: 전체(데이터+패리티)의 1의 개수가 짝수가 되게 함홀수 패리티: 전체 1의 개수가 홀수가 되게 함예) 데이터 1011 (1의 개수=3, 홀수)짝수 패리티 → 패리티 비트 1을 붙여 1011|1 (전체 1의 개수=4, 짝수)홀수 패리티 → 패리티 비트 0을 붙여 1011|0 (전체 1의 개수=3, 홀수 유지)오류 검출 원리전송/저장 후 전체 1의 개수를 다시 세서, 약속(짝수/홀수)과 다르면 오류 발생으로 판단.한계점단일 비트 오류(1개 flip)는 탐지 가..
1. 등장 배경1990년대 초반, 인터넷과 이메일 사용의 확산으로 개인 간의 안전한 통신과 프라이버시 보호 필요성 대두하지만, 기존 상용 보안 기술은 고가·제한적 → 개인 사용자가 쉽게 쓸 수 있는 암호화 도구 부재필 짐머만(Phil Zimmermann) 이 1991년에 PGP(Pretty Good Privacy) 공개2. PGP란(Pretty Good Privacy)이메일 메시지와 파일을 암호화, 복호화, 서명, 그리고 인증하는 데 사용됩니다.PGP에서는 Web of Trust(신뢰망)개념을 사용하여 키를 관리하고 있습니다.2.1. PGP의 주요 기능PGP는 다음과 같은 주요 기능을 제공합니다:암호화: PGP는 공개키 암호화를 사용하여 데이터를 암호화합니다. 이는 데이터를 안전하게 전송하고, 개인키를 ..
쿠키방식-현재 사용 X동작 원리사용자가 로그인을 하면 서버가 인증 정보(아이디, 권한 등)를 직접 쿠키에 저장한다.이후 요청마다 브라우저가 쿠키를 자동으로 전송한다.서버는 쿠키 내용 만을 확인하여 인증 처리를 한다.특징인증 상태가 클라이언트(브라우저) 쿠키에 직접 저장된다.서버에는 별도로 저장할 필요가 없다장점구현이 단순하고 서버의 부담이 적다단점쿠키의 조작,탈취(XSS, 세션 하이재킹)에 취약하여 위조,변조에 따른 보안 위험이 높다대규모 서비스에는 적합하지 않다세션 방식동작 원리로그인 성공 시 서버가 세션을 생성하여 사용자의 상태를 저장한다. 이후 해당 세션의 ID를 서버에 저장한다.클라이언트는 세션 ID만을 쿠키에 저장한다.이후 사용자가 동일한 웹 사이트에 접속할 때마다 브라우저는 저장된 쿠키를 HT..
