오픈 리다이렉트(Open Redirect) 취약점 이해하기

오픈 리다이렉트란 무엇인가 오픈 리다이렉트는 웹 애플리케이션이 사용자가 입력한 URL 값을 검증 없이 그대로 리다이렉트 대상으로 사용할 때 발생하는 취약점이다. 예를 들어 로그인 후 원래 보려던 페이지로 돌려보내기 위해 /login?redirect_url=/mypage 같은 파라미터를 쓰는 경우가 많은데, 이 값을 서버가 신뢰하고 아무 검증 없이 이동시켜주면 공격자가 redirect_url=https://evil.com 같은 외부 주소를 넣어도 그대로 이동시켜버리는 문제가 생긴다. 쉽게 비유하면, … 더 읽기

세션 고정 공격(Session Fixation)이란?

세션 고정 공격의 정의 세션 고정 공격은 공격자가 미리 알고 있는 세션 ID를 피해자에게 강제로 사용하게 만든 뒤, 피해자가 로그인에 성공하면 그 세션 ID를 그대로 이용해 계정에 접근하는 공격 기법입니다. 일반적인 세션 하이재킹은 사용자의 세션 ID를 ‘탈취’하는 방식이지만, 세션 고정 공격은 공격자가 세션 ID를 먼저 ‘심어두고’ 피해자가 로그인해서 인증까지 마치도록 유도하는 점이 특징입니다. 비유하자면, 공유 … 더 읽기

SSRF 공격이란? 서버가 공격자의 대리인이 되는 이유

SSRF의 정의 SSRF(Server-Side Request Forgery, 서버 측 요청 위조)는 공격자가 서버로 하여금 자신이 원하는 곳으로 대신 요청을 보내게 만드는 공격 기법입니다. 정상적인 사용자라면 브라우저에서 직접 외부 서버에 접근하지만, SSRF는 대상 서버 자체가 요청을 발생시키기 때문에 서버의 권한과 네트워크 위치를 그대로 이용할 수 있다는 점이 핵심입니다. 예를 들어 이미지 URL을 입력받아 서버가 대신 다운로드해주는 기능이 있다면, … 더 읽기

HSTS란? HTTPS 강제 접속의 원리

HSTS의 정의 HSTS(HTTP Strict Transport Security)는 웹 서버가 브라우저에게 ‘앞으로 이 사이트는 반드시 HTTPS로만 접속하라’고 지시하는 보안 정책입니다. 서버가 응답 헤더에 이 정보를 담아 보내면, 브라우저는 이후 같은 도메인에 접속할 때 사용자가 http://로 입력하더라도 자동으로 https://로 바꿔서 요청합니다. 이는 서버가 응답 헤더에 다음과 같은 형태로 지시하는 방식으로 동작합니다. Strict-Transport-Security: max-age=31536000; includeSubDomains 여기서 max-age는 이 정책을 … 더 읽기

CSP(Content Security Policy)란? XSS를 막는 또 다른 방법

CSP란 무엇인가 CSP(Content Security Policy)는 웹 브라우저가 어떤 출처의 리소스만 실행하거나 불러올 수 있는지를 서버가 명시적으로 지정하는 보안 정책입니다. HTTP 응답 헤더나 HTML의 meta 태그를 통해 전달되며, 브라우저는 이 정책을 읽고 정책에 어긋나는 스크립트, 이미지, 스타일 등의 로딩을 차단합니다. 비유하자면 CSP는 ‘건물 출입 허가 명단’과 같습니다. 명단에 없는 사람(출처)은 아무리 정당해 보여도 건물(브라우저) 안으로 들어올 … 더 읽기

Negative Caching이란? 존재하지 않는 데이터까지 캐싱해야 하는 이유

Negative Caching이란? 캐싱이라고 하면 보통 자주 조회되는 데이터를 저장해 두었다가 빠르게 응답하는 기술을 떠올립니다. 그런데 Negative Caching은 조금 다릅니다. 이는 ‘존재하지 않는 데이터’에 대한 조회 결과, 즉 실패 응답 자체를 캐싱하는 기법입니다. 예를 들어 사용자가 존재하지 않는 회원 ID로 조회를 요청했을 때, 시스템이 DB까지 가서 ‘없음’을 확인하고 그 결과를 잠시 저장해 두는 것입니다. 다음에 같은 … 더 읽기

Cache Warming이란? 캐시를 미리 채워두는 이유

Cache Warming의 정의 Cache Warming(캐시 워밍)은 서비스가 실제 사용자 요청을 받기 전에, 자주 조회될 것으로 예상되는 데이터를 미리 캐시에 채워두는 작업을 말합니다. 보통 캐시는 사용자가 데이터를 처음 요청할 때 채워지는데, 이 과정을 ‘콜드 캐시(Cold Cache)’ 상태라고 부릅니다. 콜드 캐시 상태에서는 캐시에 데이터가 없기 때문에 매번 DB나 원본 서버까지 조회를 해야 해서 응답이 느리고 부하가 커집니다. … 더 읽기

Jitter란? 백오프에 무작위성을 더하는 이유

Jitter의 정의 Jitter는 재시도(Retry) 로직에서 대기 시간에 일부러 ‘무작위성’을 섞는 기법입니다. 보통 네트워크 요청이 실패하면 시스템은 일정 시간 대기 후 재시도하는 백오프(Backoff) 전략을 사용합니다. 대표적으로 지수 백오프(Exponential Backoff)는 실패할 때마다 대기 시간을 2배씩 늘리는 방식인데, 문제는 여러 클라이언트가 동시에 실패했을 때 모두 똑같은 시점에 재시도를 몰아서 시도한다는 점입니다. Jitter는 이 대기 시간에 랜덤 값을 더하거나 … 더 읽기

Retry Storm이란? 재시도가 오히려 시스템을 무너뜨리는 이유

Retry Storm이란? Retry Storm(재시도 폭풍)은 일시적인 장애가 발생했을 때, 여러 클라이언트가 동시에 재시도 요청을 보내면서 오히려 서버에 더 큰 부하를 유발하고 장애를 확산시키는 현상을 말합니다. 원래 재시도(Retry)는 네트워크 순간 끊김이나 일시적 오류를 자동으로 극복하기 위한 안전장치인데, 잘못 설계되면 이 안전장치 자체가 시스템을 무너뜨리는 원인이 됩니다. 비유하자면 사람이 많이 몰리는 은행 창구에서 갑자기 시스템이 느려졌다고 상상해보세요. … 더 읽기

Request Hedging이란? 지연을 줄이기 위한 중복 요청 전략

Request Hedging의 정의 Request Hedging(리퀘스트 헤징)은 하나의 요청에 대한 응답이 늦어질 것을 대비해, 같은 요청을 여러 서버에 중복으로 보내고 그중 가장 먼저 도착한 응답만 사용하는 지연 시간 최적화 전략입니다. 이름 그대로 ‘헤지(hedge)’, 즉 위험을 분산시키는 금융 용어에서 따온 개념으로, 특정 서버 하나가 느려지더라도 전체 응답 시간이 늘어지지 않도록 안전장치를 마련하는 방식입니다. 예를 들어 콜택시를 부를 … 더 읽기