MIME 주장과 실제 파일 바이트를 분리하는 업로드 경계
브라우저가 보내는 MIME과 확장자는 신뢰할 수 있는 파일 형식 증명이 아닙니다. 특히 공개 bind mount에 저장하는 CMS 이미지는 저장 전에 최소한의 실제 바이트 검사와 원자성 보장이 필요합니다.
OAuth · JWT · 보안 기초 개념 소개
브라우저가 보내는 MIME과 확장자는 신뢰할 수 있는 파일 형식 증명이 아닙니다. 특히 공개 bind mount에 저장하는 CMS 이미지는 저장 전에 최소한의 실제 바이트 검사와 원자성 보장이 필요합니다.
인증 게이트가 있는 앱에서 어떤 경로는 비인증 사용자도 봐야 하는가 를 결정하는 자리가 있습니다. 이 자리에 공개 경로 화이트리스트 가 보통 자리잡습니다. 그리고 신규 도메인 도입 시 이 자리를 같이 갱신 하지 않으면 사용자가 정보성 페이지에 진입할 때 로그인 화면으로 튕깁니다.
문의하기 · 댓글 · 건의함처럼 로그인 없이 공개된 폼은 가장 자주 남용당하는 표적입니다. CAPTCHA 를 안 쓰면 안 된다는 결론으로 건너뛰기 전에, 더 적은 비용으로 상당한 방어가 가능한 수단들이 있습니다.
브라우저가 페이지를 그릴 때마다 여러 보호 메커니즘이 동시에 돕니다. 동일 출처 정책 · CORS preflight · CSP 의 스크립트 화이트리스트 · HSTS · Spectre 이후 도입된 격리 헤더. 이 글은 각 헤더의 역할과 자주 쓰이는 모양 · 점검 도구.
비밀번호를 평문으로 저장하면 안 된다는 것은 익숙하지만, 어떤 해시 함수를 어떻게 쓸지는 시대마다 달랐습니다. MD5 → SHA-1 → bcrypt → scrypt → Argon2 의 흐름은 단순한 유행이 아니라 공격 비용 · 하드웨어 · 기억력 사이의 군비 경쟁의 결과. 이 글은 비밀번호 저장의 의미 · 메모리 강성…
신뢰할 수 없는 입력은 시스템의 가장자리에서 들어옵니다. HTTP body · query · headers · 환경 변수 · 외부 API 응답 · 파일 내용. 입력을 안쪽 코드까지 그대로 흘리면 타입 · 의미가 흐려지고 보안 사고도 그 가장자리에서 자주 시작. 이 글은 경계 검증 (boundary validation)…
레이트 리밋은 자원을 보호하고 비용을 통제하고 남용을 줄입니다. 보기에 단순하지만 분산 환경의 정확성 · 공정성 · UX 사이에서 결정이 누적됩니다. 이 글은 fixed window · sliding window · token bucket · leaky bucket 알고리즘 · Redis 기반 구현 · 다른 층 (CDN…
OAuth 2.0 은 사용자의 자격을 노출하지 않고 다른 시스템에 권한 위임을 허용하는 표준. 위에 OpenID Connect 가 인증 (누구인가) 을 얹습니다. 이 글은 Authorization Code Flow + PKCE · state 와 nonce · 스코프 설계 · Google · Kakao · Naver ·…
JWT 는 가벼운 클레임 전달 수단이지만, 그 자체로 인증 시스템의 모든 답을 주지는 않습니다. 짧은 액세스 토큰 · 긴 리프레시 토큰 패턴 · 무효화 전략 · 알고리즘 선택 · 잘 알려진 함정 (alg:none) 을 정리합니다.