분류 전체보기 (71) 썸네일형 리스트형 8장. 실무에서 꼭 필요한 보안 지식 1. 인증과 인가인증: 사용자가 누구인지 확인하는 과정인증은 통해서 사용자가 누구인지 확인하고 그 후에 토큰을 발급해서 매 요청마다 다시 인증하지 않고 토큰을 사용해서 사용자를 식별한다.토큰으로 사용자를 식별하기 위해서는 정보를 저장해야 하는데 서버 별도의 저장소에 저장해서 토큰으로 매핑 하거나 토큰 자체에 사용자 식별 정보를 저장한다.1.1. 외부 저장소에 식별 정보 저장서버에 토큰과 사용자 식별 정보를 DB또는 레디스같은 별도 저장소에 보관할 수 있다.그 때 저장되는 데이터는토큰사용자 식별자생성 시간최근 사용 시간그 외 유효 시간, 클라이언트 버전 등 기타 데이터등이 저장된다.별도 저장소 사용은 보통 서버가 여러 대인 경우, 세션 공유가 필요하거나 서버 재시작 시에도 인증 상태를 유지해야 할 때 사용.. 4. 행동 기반 탐지 1. 왜 행동 기반 탐지가 필요한가초기의 매크로는AutoHotkey단순 키보드/마우스 매크로화면 좌표 클릭같은 UI기반의 매크로가 대부분이었다.때문에 매크로 차단은IP 차단요청 빈도 제한CAPTCHA기술들이 주요 방어 수단으로 사용되었다.그러나 최근 매크로는Selenium / Playwright / Puppeteer(브라우저 자동화 프레임워크)Headless ChromeHTTP Client 직접 호출 (fetch 재현) 같이 UI와 함께 HTTP 코드를 가지고 자동화 클라이언트 형태로 존재한다.기존에 있던 매크로 차단 기술은 여전히 유효하나 이 기술 만으로는 모든 자동화 공격을 판별할 수 없는 단계에 도달한 것이다.그래서 관점이 바뀌었다.이 요청이 단순히 정상 형식을 갖추었는가가 아니라 이 요청이 어떤 .. 3. 트래픽/행동 레벨 보안 1. Rate Limit를 어떻게 정의할까?Rate Limit는 간단하게 말하면 요청 제한 횟수를 정의한다고 볼 수 있다.개념을 더 확장한다면 Key에 대해 일정 기간/속도 내 요청량을 제한하여 서버 안정성과 악용을 방지하는 정책을 말한다.예를 들어 사람은 1초에 1번 정도, 잘못 눌러서 3번 까지만 요청이 가능한데 매크로의 경우 1초에 수십에서 많으면 수백번까지 동일한 요청을 할 수 있다.Rate Limit를 만들기 위해서는 최소 4가지를 먼저 정의해야 한다.1. Key (누구 기준으로 셀지)sessionId, memberNo, IP 등을 기준으로 잡고 특정 시간 안에 얼마나 요청을 보냈는지 확인하고 매크로로 판단할 수 있다. 단일 Key로 충분한 경우도 있지만 공격/공유 IP/다중 디바이스 특성 때문.. 2-2. 비즈니스 로직 보안 - 매크로를 막기 위한 추가 로직 보안 매크로/봇은 더 이상 브라우저 자동화 수준에 머물지 않는다.단순 키보드/마우스 매크로를 넘어 HTTP 요청을 직접 생성하고 세션/쿠키/CSRF 토큰까지 그대로 재사용하면서 서버를 두드린다.따라서 UI에만 의존한 방어(캡차, disabled 버튼, JS 검증)는 조금만 시간이 지나면 우회된다.진짜 관건은 “서버가 스스로 요청의 정당성을 판단할 수 있느냐?”이다. 1. 토큰 + 맥락 바인딩(Context Binding)의 필요성1.1. 토큰은 원래 무엇을 위한 것인가CSRF 토큰액션 토큰(action_token)이메일 인증 토큰비밀번호 찾기 토큰이 토큰들의 공통점은 랜덤 문자열 == 세션 값으로 검증하는 것이다.1.2. 맥락(Context)란 무엇인가토큰이 어떤 상황에서 발급되었는지에 대한 정보를 예약/강습.. 2-1. 비즈니스 로직 보안 - 액션 토큰에 대해서 액션 토큰은 특정 요청이 정상적인 화면 흐름을 따라 이루어졌는지 검증하기 위해 사용된다.일반적으로 화면에서 토큰을 발급하고, 이후 요청에서 동일한 값을 전달해야만 처리가 가능한 형태로 구현된다.하지만 실제 서비스에서는 사용자가 해당 화면을 열지 않았음에도 자동화 프로그램이 요청을 성공시키는 사례가 자주 발생한다.이는 구조적으로 액션 토큰만으로는 자동화 공격을 막을 수 없기 때문이다.다음은 그 개념적 이유와 이해를 돕기 위한 예시들이다.1.액션 토큰의 한계1.1.화면 접근 여부만으로 토큰 발급을 통제할 수 없다자동화 프로그램은 화면을 직접 보지 않아도 백그라운드 요청을 통해 토큰 발급 경로에 접근할 수 있다.사람이 화면을 열었는지 여부는 서버에서 구분할 수 없고 자동화 프로그램은 단순히 GET 요청을 통해.. 1. 웹 보안 기초: HTTP·세션·인증/인가·CSRF 개념 정리 웹 보안의 시작은 복잡한 기술이 아니라 HTTP 요청이 어떻게 만들어지고 서버가 그것을 어떻게 처리하는가를 이해하는 데서 시작된다.매크로 공격도 결국 이 구조의 허점을 이용하기 때문에 기초 개념을 정확히 이해하는 것이 필수적이다.1. HTTP 요청/응답 구조웹은 결국 문자열로 된 HTTP 요청을 주고받는 구조이다.즉, 모든 요청과 응답은 문자열 구조를 가지고 있다.POST /applyUser-Agent: Chrome/123.0Cookie: JSESSIONID=abcdContent-Type: application/x-www-form-urlencodedname=홍길동&time=0900브라우저도 이런 요청을 보내고 매크로 프로그램도 똑같은 요청을 만들 수 있다.Header(예: User-Agent, Refer.. 7장. IO병목, 어떻게 해결하지 1. 네트워크 IO와 자원 효율서버 프로그램은 기본적으로 네트워크 기반 프로그램이다.많은 서버는 HTTP 프로토콜을 이용해 클라이언트와 데이터를 주고받는다.데이터 처리를 담당하는 DB 역시 TCP 기반 프로토콜을 사용해 네트워크로 데이터를 주고받는다.Redis를 메모리 캐시로 사용할 때도 내부적으로는 네트워크 통신을 통해 데이터가 오간다.서버 API 또한 마찬가지로 네트워크 통신을 기반으로 동작한다. 네트워크를 통해 데이터를 주고받는 과정은 단순화하면 다음과 같다.출력 스트림을 통한 데이터 발신입력 스트림을 통한 데이터 수신이 과정에서 데이터 입출력이 실행되는 동안 스레드는 데이터 전송이 완료될 때까지 대기하며 그 시간 동안 아무 작업도 수행하지 않는다.이를 IO 블로킹이라고 하며 블로킹이란 특정 작업이.. 0. 매크로란 매크로란 사람이 브라우저에서 직접 수행하던 클릭, 입력, 조회, 예약 등의 행동을 프로그램이나 스크립트가 대신 수행하여 서비스의 정상적인 이용 흐름을 대량·고속으로 반복 실행하는 자동화 행위를 의미한다. 이러한 매크로는 단순한 편의 기능을 넘어 특정 시점에 요청을 집중시키거나 사람보다 빠른 속도로 시스템을 선점함으로써 서비스의 공정성과 안정성을 해칠 수 있다는 점에서 문제가 된다.특히 예약, 결제, 신청과 같이 경쟁 조건이 존재하는 서비스에서는 매크로 사용 여부가 곧 결과의 유불리를 결정짓는 요소가 되며 이는 정상적인 사용자 경험을 심각하게 훼손할 수 있다. 매크로의 문제는 공정성 훼손에만 국한되지 않는다.매크로는 동일한 요청을 짧은 시간 안에 반복적으로 전송하는 특성 때문에 그 자체만으로도 서버에 심.. 이전 1 2 3 4 ··· 9 다음