icon

안동민 개발노트

4장 : 어플리케이션보안

인증·인가·API 보안

웹서비스에서 가장 현실적인 보안 문제인 인증, 인가, API 보안을 정리합니다.

웹서비스에서 가장 현실적인 보안 문제인 인증, 인가, API 보안을 정리합니다.

4장 1절: 웹 구조, HTTP, 쿠키, 세션, 인증과 인가
4장 2절: SQL Injection
4장 3절: XSS, CSRF, 파일 업로드 취약점
4장 4절: 인증·인가·API 보안
로그인
비밀번호
세션
토큰
관리자 권한
API 인증
API 권한 검증
접근통제 취약점

실기에서도 다음 형태로 자주 나올 수 있습니다.

인증과 인가의 차이를 설명하시오.
세션 관리 보안 대책을 설명하시오.
JWT 사용 시 보안상 주의사항을 설명하시오.
IDOR 취약점의 개념과 대응 방안을 설명하시오.
API 보안 대책을 설명하시오.
브루트포스 공격 대응 방안을 설명하시오.

학습 목표

이번 절가 끝나면 다음 질문에 답할 수 있어야 합니다.

질문목표
인증이란 무엇인가?사용자의 신원을 확인하는 절차라고 설명
인가란 무엇인가?인증된 사용자의 권한을 확인하는 절차라고 설명
비밀번호 보안 대책은?해시, 솔트, MFA, 실패 제한, 재사용 방지 등을 설명
브루트포스 공격이란?비밀번호를 반복 시도하는 공격이라고 설명
크리덴셜 스터핑이란?유출된 계정 정보를 다른 서비스에 대입하는 공격이라고 설명
세션 보안 대책은?세션 ID 난수화, 재발급, 타임아웃, 쿠키 보안 속성 등을 설명
JWT란 무엇인가?서명된 토큰으로 인증 정보를 전달하는 방식이라고 설명
JWT 사용 시 주의점은?서명 검증, 만료시간, 민감정보 저장 금지, HTTPS 등을 설명
접근통제 취약점이란?권한 검증이 부족해 다른 자원이나 기능에 접근하는 문제라고 설명
IDOR란 무엇인가?객체 식별자를 조작해 타인의 자원에 접근하는 취약점이라고 설명
API 보안 대책은?인증, 인가, 입력값 검증, Rate Limiting, 로그, 토큰 보호 등을 설명

학습 내용의 큰 그림

웹서비스 보안은 결국 다음 흐름을 안전하게 만드는 것입니다.

1. 사용자가 로그인한다.
2. 서버가 사용자를 인증한다.
3. 서버가 세션 또는 토큰을 발급한다.
4. 사용자는 세션이나 토큰으로 계속 요청한다.
5. 서버는 매 요청마다 권한을 확인한다.
6. API는 요청값과 권한을 검증한다.
7. 이상 요청은 제한하고 로그로 남긴다.

여기서 문제가 생기면 다음 공격이 발생할 수 있다.

문제발생 가능한 공격
약한 비밀번호브루트포스, 사전 공격
유출 계정 재사용크리덴셜 스터핑
세션 관리 미흡세션 하이재킹, 세션 고정
권한 검증 누락접근통제 취약점, IDOR
토큰 검증 미흡토큰 위조, 권한 우회
API 제한 없음대량 조회, 자동화 공격
입력값 검증 미흡Injection, 비정상 요청
로그 부족사고 분석 어려움

이번 절의 핵심은 이것입니다.

인증은 “너 누구야?”
인가는 “너 이거 해도 돼?”
API 보안은 “모든 요청을 인증·인가·검증·기록하는 것”

인증

인증이란?

인증은 사용자가 주장하는 신원이 실제로 맞는지 확인하는 절차입니다.

시험식 정의는 다음입니다.

인증은 사용자가 주장하는 신원이 실제로 맞는지 확인하는 절차이다.
핵심 의미
인증 = 너 누구야?

예시는 다음입니다.

아이디와 비밀번호 로그인
OTP 입력
공동인증서 또는 인증서 로그인
지문 인증
얼굴 인증
보안 토큰 인증

인증 요소

인증 요소는 크게 세 가지로 나눌 수 있습니다.

구분의미예시
지식 기반사용자가 알고 있는 것비밀번호, PIN
소유 기반사용자가 가지고 있는 것OTP, 보안카드, 인증서, 휴대폰
생체 기반사용자 신체 특징지문, 얼굴, 홍채

시험에서는 다음 문장을 기억하면 됩니다.

인증 요소는 지식 기반, 소유 기반, 생체 기반으로 구분할 수 있다.

MFA

MFA란?

MFA는 Multi-Factor Authentication입니다.
한국어로는 다중인증입니다.

시험식 정의는 다음입니다.

MFA는 지식, 소유, 생체 등 서로 다른 인증 요소를 2개 이상 결합하여 사용자의 신원을 확인하는 인증 방식이다.

예시는 다음입니다.

비밀번호 + OTP
비밀번호 + 인증서
비밀번호 + 지문
비밀번호 + 휴대폰 푸시 승인

MFA가 필요한 이유

비밀번호는 유출될 수 있습니다.

피싱
악성코드
키로거
DB 유출
비밀번호 재사용
무차별 대입 공격

비밀번호가 유출되어도 MFA가 있으면 공격자가 추가 인증을 통과해야 하므로 계정 탈취 위험이 줄어듭니다.

시험식 답안
MFA는 비밀번호 외에 OTP, 인증서, 생체정보 등 추가 인증 요소를 요구하여 비밀번호 유출이나 추측 공격이 발생하더라도 계정 탈취 가능성을 줄이는 보안 대책이다.

비밀번호 보안

안전한 비밀번호 정책

비밀번호 정책은 시스템보안에서도 배웠지만, 웹 인증에서도 매우 중요합니다.

항목설명
최소 길이너무 짧은 비밀번호 금지
복잡도문자, 숫자, 특수문자 조합
재사용 제한이전 비밀번호 재사용 제한
사용자 정보 포함 금지이름, 생일, 전화번호 등 금지
사전 단어 제한password, admin 등 금지
로그인 실패 제한반복 실패 시 잠금 또는 지연
초기 비밀번호 변경최초 로그인 시 변경 요구
유출 비밀번호 차단이미 유출된 비밀번호 사용 금지
시험식 표현
비밀번호 정책에는 최소 길이, 복잡도, 재사용 제한, 사용자 정보 포함 금지, 로그인 실패 제한, 초기 비밀번호 변경, 유출 비밀번호 차단 등이 포함되어야 한다.

비밀번호 저장 보안

비밀번호는 평문으로 저장하면 안 됩니다.

나쁜 예
user01 / qwer1234
admin / admin1234

DB가 유출되면 비밀번호가 그대로 노출됩니다.

따라서 비밀번호는 다음 방식으로 저장해야 합니다.

비밀번호 원문
→ 솔트 추가
→ 안전한 해시 함수 적용
→ 해시값 저장
시험식 답안
비밀번호는 평문으로 저장하지 않고 사용자별 솔트를 적용한 해시값으로 저장해야 한다. 솔트는 동일한 비밀번호라도 서로 다른 해시값이 생성되도록 하여 사전 공격과 레인보우 테이블 공격을 어렵게 한다.

솔트

솔트는 비밀번호 해시 계산 시 함께 사용하는 임의의 값입니다.

비밀번호 + 솔트 → 해시값

솔트의 효과는 다음입니다.

효과설명
동일 비밀번호 구분같은 비밀번호라도 사용자별 해시값이 달라짐
레인보우 테이블 방어미리 계산된 해시 테이블 사용을 어렵게 함
사전 공격 비용 증가공격자가 사용자별로 다시 계산해야 함

비밀번호 공격

브루트포스 공격

브루트포스 공격은 가능한 비밀번호 조합을 반복적으로 시도하는 공격입니다.

시험식 정의
브루트포스 공격은 가능한 비밀번호나 인증값을 무차별적으로 반복 대입하여 올바른 값을 찾아내는 공격이다.
대응 방안
로그인 실패 횟수 제한
계정 잠금 정책
Rate Limiting
CAPTCHA
MFA
강력한 비밀번호 정책
로그 모니터링

사전 공격

사전 공격은 자주 사용되는 단어나 패턴을 이용해 비밀번호를 추측하는 공격입니다.

password
qwer1234
admin123
company2026
birthdate
대응
사전 단어 비밀번호 금지
사용자 정보 포함 금지
복잡도와 길이 정책
유출 비밀번호 차단

크리덴셜 스터핑

크리덴셜 스터핑은 다른 서비스에서 유출된 계정 정보를 이용해 다른 사이트에 로그인 시도하는 공격입니다.

시험식 정의
크리덴셜 스터핑은 다른 서비스에서 유출된 아이디와 비밀번호 조합을 이용하여 여러 서비스에 자동으로 로그인 시도하는 공격이다.

왜 위험할까요?

사용자가 여러 사이트에서 같은 비밀번호를 재사용하기 때문입니다.

대응 방안
MFA 적용
유출 비밀번호 사용 차단
로그인 시도 Rate Limiting
비정상 로그인 탐지
동일 계정 반복 실패 탐지
새로운 위치·기기 접속 알림
비밀번호 재사용 금지 안내
실기형 답안
크리덴셜 스터핑은 다른 서비스에서 유출된 계정 정보를 이용해 대상 서비스에 자동 로그인 시도하는 공격이다. 대응 방안으로는 MFA 적용, 유출 비밀번호 사용 차단, 로그인 Rate Limiting, 비정상 로그인 탐지, 새로운 기기·위치 접속 알림, 반복 실패 계정 모니터링 등이 있다.

로그인 보안 대책

로그인 기능은 공격자가 가장 많이 노리는 지점입니다.

주요 대책은 다음입니다.

대책설명
HTTPS 적용로그인 정보 도청 방지
비밀번호 해시 저장DB 유출 시 원문 노출 방지
MFA 적용계정 탈취 위험 감소
로그인 실패 제한브루트포스 방지
Rate Limiting자동화 공격 제한
CAPTCHA봇 요청 차단
계정 잠금 또는 지연반복 시도 제한
유출 비밀번호 차단이미 유출된 비밀번호 사용 금지
로그인 알림비정상 접속 인지
세션 재발급로그인 후 세션 고정 방지
로그 모니터링공격 시도 탐지
실기형 답안
로그인 보안을 위해 HTTPS를 적용하고, 비밀번호는 솔트를 적용한 해시값으로 저장해야 한다. 또한 MFA, 로그인 실패 제한, Rate Limiting, CAPTCHA, 유출 비밀번호 차단, 비정상 로그인 탐지, 로그인 후 세션 재발급, 접속 로그 모니터링을 적용해야 한다.

인가

인가란?

인가는 인증된 사용자가 특정 자원이나 기능에 접근할 권한이 있는지 확인하는 절차입니다.

시험식 정의
인가는 인증된 사용자가 허용된 권한 범위 내에서 자원이나 기능에 접근할 수 있도록 통제하는 절차이다.
핵심 의미
인가 = 너 이거 해도 돼?

인증과 인가 비교

구분인증인가
질문너는 누구인가?너는 무엇을 할 수 있는가?
영어AuthenticationAuthorization
시점로그인 시기능 접근 시
예시아이디·비밀번호 확인관리자 메뉴 접근 허용
실패 결과로그인 실패권한 없음, 403
실기 답안
인증은 사용자의 신원을 확인하는 절차이고, 인가는 인증된 사용자가 특정 자원이나 기능에 접근할 권한이 있는지 확인하는 절차이다. 예를 들어 로그인은 인증이고, 관리자 페이지 접근 허용 여부를 판단하는 것은 인가이다.

접근통제 취약점

접근통제 취약점이란?

접근통제 취약점은 서버가 사용자의 권한을 제대로 확인하지 않아 허용되지 않은 자원이나 기능에 접근할 수 있는 문제입니다.

시험식 정의
접근통제 취약점은 인증된 사용자의 권한을 서버 측에서 적절히 검증하지 않아 다른 사용자의 자원이나 관리자 기능에 접근할 수 있는 취약점이다.
핵심 의미
로그인은 했지만, 해도 되는 일인지 확인하지 않는 문제

접근통제 취약점의 유형

유형설명
수평 권한 상승같은 등급 사용자 간 타인 자원 접근
수직 권한 상승일반 사용자가 관리자 기능 접근
IDOR객체 식별자 조작으로 타인 자원 접근
강제 브라우징숨겨진 URL 직접 접근
관리자 페이지 노출관리자 기능 접근통제 미흡
API 권한 검증 누락API 요청에서 사용자 권한 확인 부족

IDOR

IDOR란?

IDOR는 Insecure Direct Object Reference입니다.

시험식 정의
IDOR는 사용자가 요청 파라미터의 객체 식별자를 조작하여 권한이 없는 다른 사용자의 자원에 접근하는 접근통제 취약점이다.
핵심 의미
IDOR = 번호만 바꿨더니 남의 정보가 보이는 문제

예를 들어 다음 URL이 있다고 합시다.

/user/profile?id=100

일반 사용자가 id=101로 바꿨을 때 다른 사용자의 정보가 보이면 IDOR입니다.

/user/profile?id=101

IDOR의 원인

IDOR의 핵심 원인은 서버가 객체 소유자나 권한을 확인하지 않는 것입니다.

나쁜 구조
요청한 id 값으로 DB 조회
→ 결과를 그대로 반환
안전한 구조
요청한 사용자가 해당 id 자원에 접근할 권한이 있는지 확인
→ 권한이 있으면 반환
→ 권한이 없으면 403 처리
시험식 표현
IDOR는 서버가 요청 파라미터의 객체 ID에 대해 소유자와 접근 권한을 검증하지 않을 때 발생한다.

IDOR 대응책

대응책설명
서버 측 권한 검증매 요청마다 사용자와 자원 소유권 확인
객체 소유자 검증본인 자원인지 확인
접근통제 정책 적용역할과 권한에 따른 접근 제한
예측 어려운 식별자 사용단순 순번 ID 노출 최소화
URL 숨김에 의존 금지숨겨진 URL도 직접 접근 가능
API 응답 최소화필요한 데이터만 반환
로그 모니터링객체 ID 순차 접근 탐지
403 처리권한 없는 요청은 접근 금지 응답

중요한 점은 다음입니다.

식별자를 UUID처럼 예측 어렵게 만드는 것은 보조 대책이다.
핵심은 서버 측 권한 검증이다.
실기형 답안
IDOR는 사용자가 요청 파라미터의 객체 식별자를 조작하여 권한 없는 타인의 자원에 접근하는 취약점이다. 대응 방안으로는 서버 측에서 매 요청마다 사용자 권한과 자원 소유자를 검증하고, 역할 기반 접근통제를 적용하며, 단순 순번 ID 노출을 줄이고, 비정상 객체 ID 순차 접근을 로그로 모니터링해야 한다.

관리자 페이지 보호

관리자 페이지는 매우 민감합니다.

관리자 페이지가 노출되거나 권한 검증이 약하면 큰 피해가 발생할 수 있습니다.

위험 예시
일반 사용자가 관리자 URL 직접 접근
관리자 로그인 페이지가 외부에 그대로 노출
약한 관리자 비밀번호 사용
관리자 세션 탈취
관리자 기능에 CSRF 발생
관리자 페이지에서 XSS 실행

관리자 페이지 보호 대책은 다음입니다.

대책설명
관리자 인증 강화MFA, 강력한 비밀번호
접근 IP 제한허용된 관리자망 또는 VPN만 접근
권한 검증관리자 권한 매 요청 확인
URL 숨김에 의존 금지주소를 어렵게 하는 것만으로 보호 불가
세션 보안Secure, HttpOnly, SameSite, 타임아웃
관리자 작업 로그권한 변경, 삭제, 설정 변경 기록
중요 작업 재인증계정 삭제, 권한 변경 시 재인증
CSRF 방어관리자 기능에도 CSRF Token 적용
WAF 적용웹 공격 탐지
계정 분리일반 계정과 관리자 계정 분리
시험식 답안
관리자 페이지는 MFA와 강력한 인증을 적용하고, 접근 IP 또는 VPN을 통해 접속 대상을 제한해야 한다. 또한 관리자 권한을 서버 측에서 매 요청 검증하고, 중요 작업 재인증, 세션 보안 설정, CSRF Token, 관리자 작업 로그 기록을 적용해야 한다.

세션 관리 보안

4장 1절에서 세션을 배웠습니다.
이번 절에서는 보안 대책 중심으로 다시 정리합니다.

세션 관리 취약점은 다음 공격과 연결됩니다.

세션 하이재킹
세션 고정
세션 탈취
로그아웃 후 세션 재사용
장시간 유효한 세션 악용

세션 고정 공격

세션 고정 공격은 공격자가 미리 정한 세션 ID를 피해자가 사용하게 만든 뒤, 피해자 로그인 후 해당 세션을 공격자가 악용하는 공격입니다.

시험식 정의
세션 고정 공격은 공격자가 미리 알고 있는 세션 ID를 피해자가 사용하게 만든 뒤, 피해자가 로그인하면 해당 세션을 이용해 인증된 상태를 탈취하는 공격이다.
핵심 대응
로그인 성공 후 세션 ID 재발급

세션 관리 대책

대책설명
예측 불가능한 세션 ID충분한 난수성
로그인 후 세션 재발급세션 고정 방지
HTTPS 적용세션 ID 도청 방지
HttpOnly스크립트 쿠키 접근 제한
SecureHTTPS에서만 쿠키 전송
SameSiteCSRF 완화
세션 타임아웃장시간 미사용 세션 만료
로그아웃 시 세션 폐기서버 측 세션 무효화
중요 기능 재인증권한 변경, 결제 등 추가 확인
동시 접속과 이상 접속 탐지세션 탈취 가능성 확인
실기형 답안
세션 보안을 위해 예측 불가능한 세션 ID를 사용하고, 로그인 성공 후 세션 ID를 재발급하여 세션 고정 공격을 방지해야 한다. 또한 HTTPS, HttpOnly·Secure·SameSite 쿠키, 세션 타임아웃, 로그아웃 시 서버 측 세션 폐기, 중요 기능 재인증, 이상 접속 탐지를 적용해야 한다.

토큰 기반 인증

웹과 API에서는 세션 대신 토큰을 사용하는 경우가 많습니다.

토큰 기반 인증의 기본 흐름은 다음입니다.

1. 사용자가 로그인한다.
2. 서버가 토큰을 발급한다.
3. 클라이언트가 이후 요청에 토큰을 포함한다.
4. 서버는 토큰을 검증하고 요청을 처리한다.

보통 API에서는 Authorization 헤더를 사용합니다.

Authorization: Bearer <token>
주의할 점
토큰은 비밀번호처럼 보호해야 한다.

토큰이 탈취되면 공격자가 해당 사용자처럼 API를 호출할 수 있습니다.


JWT

JWT란?

JWT는 JSON Web Token입니다.

시험식 정의는 다음입니다.

JWT는 JSON 형식의 정보를 담고 서명을 통해 위변조 여부를 검증할 수 있는 토큰 기반 인증 방식이다.

JWT는 보통 세 부분으로 구성됩니다.

Header.Payload.Signature
부분의미
Header토큰 타입과 서명 알고리즘
Payload사용자 ID, 권한, 만료시간 등 클레임
Signature위변조 검증을 위한 서명

중요한 점은 이것입니다.

JWT는 기본적으로 서명된 토큰이지, 반드시 암호화된 토큰은 아니다.

따라서 Payload에 민감정보를 넣으면 안 됩니다.


JWT의 장점과 주의점

구분내용
장점서버가 세션 저장소 없이 토큰 검증 가능
장점API와 모바일 환경에서 사용하기 편리
주의토큰 탈취 시 만료 전까지 악용 가능
주의Payload에 민감정보 저장 금지
주의서명 검증 필수
주의만료시간 설정 필요
주의HTTPS로 전송해야 함

JWT 보안 대책

대책설명
서명 검증토큰 위변조 확인
안전한 알고리즘 사용취약한 알고리즘 금지
만료시간 설정장기간 유효 토큰 방지
민감정보 저장 금지Payload는 쉽게 디코딩 가능
HTTPS 적용토큰 도청 방지
토큰 저장 위치 주의XSS, 탈취 위험 고려
권한 클레임 검증토큰 내 권한을 서버 정책과 검증
로그아웃·폐기 전략Refresh Token 관리, 차단 목록 등
최소 권한 부여필요한 권한만 토큰에 반영
재발급 정책Refresh Token 회전 등 고려
실기형 답안
JWT는 JSON 형식의 클레임을 담고 서명을 통해 위변조 여부를 검증할 수 있는 토큰 기반 인증 방식이다. 보안 운영을 위해 서명 검증, 안전한 알고리즘 사용, 짧은 만료시간 설정, Payload에 민감정보 저장 금지, HTTPS 전송, 토큰 탈취 대비 폐기·재발급 정책, 권한 클레임 검증이 필요하다.

API 보안

API란?

API는 Application Programming Interface입니다.

웹서비스에서는 클라이언트와 서버가 데이터를 주고받기 위한 인터페이스로 사용됩니다.

예를 들어 모바일 앱이 서버에 요청합니다.

GET /api/users/me
POST /api/orders
DELETE /api/posts/123

API는 보통 JSON 데이터를 주고받습니다.


API 보안이 중요한 이유

API는 화면이 없어도 직접 호출할 수 있습니다.

공격자는 브라우저 화면을 거치지 않고 API를 직접 요청할 수 있습니다.

따라서 다음 원칙이 중요합니다.

API는 모든 요청에서 인증, 인가, 입력값 검증을 서버 측에서 수행해야 한다.
나쁜 구조
프론트엔드에서 버튼을 숨겼으니 안전하다.
안전한 구조
서버 API가 매 요청마다 권한을 검증한다.

API 주요 취약점

API에서 자주 발생하는 취약점은 다음입니다.

취약점설명
인증 누락로그인 없이 API 호출 가능
인가 누락권한 없는 데이터 조회·수정 가능
IDOR / BOLA객체 ID 조작으로 타인 데이터 접근
과도한 데이터 노출필요 이상의 민감정보 반환
Mass Assignment사용자가 보내면 안 되는 필드까지 반영
Rate Limit 부재대량 요청, 브루트포스 가능
입력값 검증 미흡Injection, 비정상 요청 가능
토큰 관리 미흡만료, 폐기, 저장 문제
CORS 설정 오류허용되지 않은 출처에서 API 접근 가능
로그 부족사고 분석 어려움

BOLA

BOLA는 Broken Object Level Authorization입니다.
IDOR와 매우 유사한 개념입니다.

시험식으로는 이렇게 이해하면 됩니다.

BOLA는 API에서 특정 객체에 접근할 때 사용자에게 해당 객체 접근 권한이 있는지 확인하지 않아 발생하는 접근통제 취약점이다.
GET /api/orders/100
GET /api/orders/101

사용자가 주문번호만 바꿔 다른 사람 주문을 볼 수 있으면 BOLA입니다.

대응
API 서버가 매 요청마다 사용자와 객체 소유권을 검증해야 한다.

Mass Assignment

Mass Assignment란?

Mass Assignment는 클라이언트가 보낸 필드를 서버가 제한 없이 객체에 반영하여, 사용자가 수정하면 안 되는 값까지 변경되는 취약점입니다.

예를 들어 일반 사용자가 다음 요청을 보냅니다.

{
  "name": "kim",
  "email": "kim@example.com",
  "role": "admin"
}

서버가 role 필드까지 그대로 반영하면 일반 사용자가 관리자가 될 수 있습니다.

시험식 정의
Mass Assignment는 서버가 클라이언트 요청 필드를 제한 없이 객체에 매핑하여 권한, 상태, 금액 등 사용자가 수정하면 안 되는 값까지 변경될 수 있는 취약점이다.
대응
허용된 필드만 반영
DTO 사용
권한별 수정 가능 필드 제한
서버 측 중요 값 결정
시험식 답안
Mass Assignment를 방지하기 위해 클라이언트가 보낸 모든 필드를 객체에 자동 반영하지 말고, 허용된 필드만 명시적으로 매핑해야 한다. 권한, 역할, 가격, 상태값 등 중요 필드는 서버 측에서 결정하고 권한별 수정 가능 항목을 제한해야 한다.

과도한 데이터 노출

API가 필요 이상의 데이터를 반환하면 정보 유출이 발생할 수 있습니다.

예를 들어 사용자 목록 API가 다음을 반환한다고 합시다.

{
  "id": 100,
  "name": "kim",
  "email": "kim@example.com",
  "passwordHash": "...",
  "residentNumber": "...",
  "role": "user"
}

화면에는 이름만 쓰더라도 API 응답에 민감정보가 포함되면 공격자가 볼 수 있습니다.

대응
필요한 데이터만 반환
민감정보 응답 제외
권한별 응답 필드 제한
서버 측 응답 필터링
시험식 문장
API는 클라이언트 화면에 사용되지 않는 민감정보까지 응답하지 않도록 필요한 데이터만 최소한으로 반환해야 한다.

API Rate Limiting

API는 자동화 요청에 취약할 수 있습니다.

로그인 API 반복 호출
인증번호 요청 API 반복 호출
검색 API 대량 호출
사용자 정보 API 순차 조회
주문 조회 API 반복 호출

Rate Limiting은 일정 시간 동안 허용되는 요청 횟수를 제한하는 대책입니다.

Rate Limiting = 요청량 제한
적용 기준
IP별
계정별
토큰별
세션별
API Key별
URL별
효과
브루트포스 방지
크리덴셜 스터핑 완화
API 남용 방지
DDoS 일부 완화
대량 정보 수집 방지
실기형 답안
API Rate Limiting은 IP, 계정, 토큰, API Key, URL 등을 기준으로 일정 시간 동안 허용되는 요청 횟수를 제한하는 보안 대책이다. 이를 통해 브루트포스, 크리덴셜 스터핑, 대량 정보 수집, 자동화 공격, API 남용을 완화할 수 있다.

CORS 기초

CORS는 Cross-Origin Resource Sharing입니다.

웹 브라우저에서 다른 출처의 API 호출을 허용할지 결정하는 정책입니다.

보안상 주의할 점은 다음입니다.

CORS를 너무 넓게 허용하면 허용되지 않은 사이트에서 API에 접근할 수 있다.
나쁜 설정
모든 출처 허용
좋은 설정
신뢰할 수 있는 도메인만 허용
필요한 메서드와 헤더만 허용
인증정보 포함 요청은 특히 제한
시험식 문장
CORS는 브라우저에서 다른 출처의 리소스 요청을 제어하는 정책이며, API 보안을 위해 신뢰할 수 있는 출처만 허용하고 필요한 메서드와 헤더만 제한적으로 허용해야 한다.

API 보안 대책 전체 정리

API 보안 대책은 다음과 같이 정리하면 됩니다.

대책설명
인증 적용로그인, 토큰, API Key 등
인가 검증사용자 권한과 객체 소유권 확인
입력값 검증형식, 길이, 범위 검증
출력값 최소화필요한 데이터만 응답
Rate Limiting자동화·대량 요청 제한
토큰 보호만료, 폐기, HTTPS, 저장 위치 관리
Mass Assignment 방지허용 필드만 반영
CORS 제한신뢰 출처만 허용
로그 기록사용자, IP, API, 결과, 시간 기록
오류 메시지 제한내부 정보 노출 방지
민감정보 암호화저장·전송 구간 보호
버전 관리취약한 구버전 API 폐기
실기형 답안
API 보안을 위해 모든 요청에 인증을 적용하고, 사용자가 요청한 자원에 접근할 권한이 있는지 서버 측에서 검증해야 한다. 또한 입력값 검증, 응답 데이터 최소화, Rate Limiting, 토큰 만료와 폐기 정책, Mass Assignment 방지, CORS 제한, 오류 메시지 노출 제한, API 호출 로그 기록을 적용해야 한다.

인증·인가·API 로그 분석

로그는 공격 탐지와 사고 분석에 중요합니다.

인증 로그에서 볼 징후

징후의심
동일 계정 로그인 실패 반복브루트포스
다수 계정에 소수 비밀번호 시도패스워드 스프레이
유출 계정 다량 로그인 시도크리덴셜 스터핑
해외 IP에서 로그인계정 탈취 가능성
새로운 기기에서 로그인계정 도용 가능성
MFA 실패 반복계정 공격 가능성

인가 로그에서 볼 징후

징후의심
사용자 ID를 순차적으로 변경해 조회IDOR
일반 사용자의 관리자 API 호출수직 권한 상승
타인 주문·게시글 접근 시도수평 권한 상승
403 응답 반복권한 우회 시도
숨겨진 URL 직접 접근강제 브라우징

API 로그에서 볼 징후

징후의심
특정 API 대량 호출자동화 공격
짧은 시간에 인증번호 반복 요청남용
순차 ID 조회대량 정보 수집, IDOR
비정상 User-Agent봇 또는 스크립트
오류 응답 급증취약점 탐색
토큰 만료 후 반복 요청토큰 재사용 시도
CORS 오류 반복허용되지 않은 출처 접근 시도
실기형 로그 답안
API 로그에서 동일 사용자가 객체 ID를 순차적으로 변경하며 조회하고 403 응답이 반복된다면 IDOR 또는 접근통제 우회 시도로 의심할 수 있다. 대응 방안으로 서버 측 객체 소유권 검증, 권한 정책 점검, Rate Limiting, 비정상 요청 차단, 로그 모니터링을 수행해야 한다.

내용 연결 정리

온라인 쇼핑몰 API를 예로 들면 다음과 같다.

1. 사용자가 로그인한다.
2. 서버는 비밀번호를 검증하고 MFA를 확인한다.
3. 로그인 성공 후 세션 또는 토큰을 발급한다.
4. 사용자가 주문 내역 API를 호출한다.
5. 서버는 토큰을 검증한다.
6. 서버는 해당 주문이 그 사용자의 주문인지 확인한다.
7. 필요한 데이터만 응답한다.
8. 요청과 응답 결과를 로그로 남긴다.
안전하지 않은 경우
주문번호만 바꾸면 타인의 주문 조회 가능 → IDOR
토큰 만료시간 없음 → 탈취 시 장기간 악용
API 요청 횟수 제한 없음 → 대량 조회 가능
사용자가 role=admin 값을 보내면 반영됨 → Mass Assignment
응답에 passwordHash 포함 → 과도한 데이터 노출
안전한 경우
서버 측 인증 검증
객체 소유권 검증
권한별 응답 데이터 제한
토큰 만료와 서명 검증
Rate Limiting
Mass Assignment 방지
API 로그 모니터링

시험에 나오는 포인트

주제시험 포인트
인증신원 확인
인가권한 확인
MFA서로 다른 인증 요소 2개 이상
비밀번호 저장솔트 적용 해시
브루트포스무차별 반복 대입
크리덴셜 스터핑유출 계정정보 재사용 공격
로그인 보안실패 제한, Rate Limiting, CAPTCHA, MFA
세션 고정로그인 후 세션 재발급으로 방지
세션 보안난수 ID, HTTPS, 쿠키 속성, 타임아웃
JWTHeader, Payload, Signature
JWT 주의서명 검증, 만료, 민감정보 금지
접근통제 취약점권한 검증 누락
IDOR객체 ID 조작으로 타인 자원 접근
수평 권한 상승같은 등급 사용자 간 권한 우회
수직 권한 상승일반 사용자가 관리자 기능 접근
관리자 페이지MFA, IP 제한, 권한 검증, 로그
API 보안인증, 인가, 입력값 검증, Rate Limiting
Mass Assignment허용되지 않은 필드까지 반영
과도한 데이터 노출필요 이상의 민감정보 반환
CORS신뢰 출처만 허용
API 로그자동화, IDOR, 권한 우회 탐지

필기형 문제풀이

문제 1

인증에 대한 설명으로 가장 적절한 것은?

A. 사용자가 접근할 수 있는 기능 범위를 확인하는 절차
B. API 요청 횟수를 제한하는 절차
C. 사용자의 신원을 확인하는 절차
D. 토큰 만료시간을 갱신하는 절차

정답: C

인증은 사용자가 누구인지 확인하는 절차입니다.


문제 2

인가에 대한 설명으로 가장 적절한 것은?

A. 사용자의 비밀번호를 해시해 신원을 확인하는 절차
B. 로그인 전 사용자가 누구인지 확인하는 절차
C. 세션 ID를 새로 발급하는 절차
D. 사용자가 특정 자원이나 기능에 접근할 권한이 있는지 확인하는 절차

정답: D

인가는 인증된 사용자가 무엇을 할 수 있는지 확인하는 절차입니다.


문제 3

MFA에 대한 설명으로 적절한 것은?

A. 서로 다른 인증 요소를 2개 이상 결합하는 인증 방식
B. 비밀번호 길이만 늘리고 추가 인증 요소는 사용하지 않는 방식
C. 같은 지식 기반 요소를 두 번 입력하게 하는 인증 방식
D. 로그인 후 인가 검증을 생략하는 방식

정답: A

MFA는 비밀번호 외에 OTP, 인증서, 생체정보 등 추가 인증 요소를 결합합니다.


문제 4

비밀번호 저장 방식으로 가장 적절한 것은?

A. 평문 저장
B. 사용자별 솔트를 적용한 해시값 저장
C. 모든 사용자의 비밀번호를 동일하게 저장
D. 암호화되지 않은 쿠키에 원문 비밀번호 저장

정답: B

비밀번호는 평문으로 저장하지 않고 솔트를 적용한 해시값으로 저장해야 합니다.


문제 5

브루트포스 공격의 설명으로 적절한 것은?

A. 유출된 정상 계정 조합을 다른 서비스에 대입하는 공격
B. 웹페이지에 악성 스크립트를 삽입하는 공격
C. 가능한 비밀번호를 반복적으로 대입하는 공격
D. 토큰 서명을 검증하지 않고 Payload를 신뢰하는 공격

정답: C

브루트포스 공격은 무차별 대입 공격입니다.


문제 6

크리덴셜 스터핑의 설명으로 적절한 것은?

A. 가능한 비밀번호를 순차적으로 모두 대입하는 공격
B. 로그인 성공 후 세션 ID를 고정시키는 공격
C. 토큰 Payload의 민감정보를 탈취하는 공격
D. 다른 서비스에서 유출된 계정 정보를 이용해 로그인 시도하는 공격

정답: D

크리덴셜 스터핑은 유출된 아이디와 비밀번호 조합을 다른 서비스에 대입하는 공격입니다.


문제 7

세션 고정 공격의 대응책으로 가장 적절한 것은?

A. 로그인 성공 후 세션 ID를 재발급한다
B. 로그인 전 발급된 세션 ID를 로그인 후에도 그대로 유지한다
C. 세션 ID를 URL에 평문으로 노출한다
D. 세션 타임아웃을 제거한다

정답: A

세션 고정 공격 방지를 위해 로그인 후 세션 ID를 새로 발급해야 합니다.


문제 8

JWT에 대한 설명으로 적절한 것은?

A. 서버 세션 저장소의 물리 위치를 나타내는 식별자
B. 세션 고정 공격을 자동으로 차단하는 쿠키 속성
C. API 요청 횟수를 제한하는 정책 이름
D. JSON 형식의 정보를 담고 서명으로 위변조 여부를 검증할 수 있는 토큰

정답: D

JWT는 Header, Payload, Signature로 구성되는 토큰 방식입니다.


문제 9

JWT 사용 시 주의사항으로 적절하지 않은 것은?

A. 서명을 검증한다
B. 만료시간을 설정한다
C. Payload에 민감정보를 저장하지 않는다
D. 서명 검증 없이 Payload만 믿고 처리한다

정답: D

JWT는 반드시 서명을 검증해야 합니다.


문제 10

IDOR에 대한 설명으로 적절한 것은?

A. 로그인 실패 횟수를 제한하지 않아 반복 대입이 가능한 취약점
B. 클라이언트가 보낸 role 값을 그대로 반영하는 취약점
C. 객체 식별자를 조작하여 권한 없는 다른 사용자의 자원에 접근하는 취약점
D. JWT Payload에 민감정보를 저장하는 취약점

정답: C

IDOR는 접근통제 취약점의 대표적인 유형입니다.


문제 11

Mass Assignment에 대한 설명으로 적절한 것은?

A. 클라이언트가 보낸 필드를 제한 없이 객체에 반영하여 권한 등 중요 값이 변경될 수 있는 취약점
B. 모든 요청을 암호화하는 기술
C. 객체 ID를 바꿔 다른 사용자의 자원에 접근하는 취약점
D. 인증 토큰의 만료시간을 짧게 설정하는 대책

정답: A

Mass Assignment는 허용되지 않은 필드까지 서버 객체에 반영될 때 발생할 수 있습니다.


문제 12

API 보안 대책으로 적절하지 않은 것은?

A. 매 요청마다 인증과 인가 검증
B. 입력값 검증
C. Rate Limiting 적용
D. 사용자가 보낸 role=admin 값을 그대로 반영

정답: D

중요 권한 값은 클라이언트 입력을 그대로 믿으면 안 됩니다.


실기형 답안 훈련

실기 예제 1

문제: 인증과 인가의 차이를 설명하시오.

좋은 답안

인증은 사용자가 주장하는 신원이 실제로 맞는지 확인하는 절차이고, 인가는 인증된 사용자가 특정 자원이나 기능에 접근할 권한이 있는지 확인하는 절차이다. 예를 들어 아이디와 비밀번호로 로그인하는 것은 인증이고, 관리자 페이지 접근 허용 여부를 판단하는 것은 인가이다.

채점 포인트

요소포함 여부
인증 = 신원 확인필수
인가 = 권한 확인필수
로그인 예시좋음
관리자 페이지 예시좋음

실기 예제 2

문제: 로그인 보안 대책을 설명하시오.

좋은 답안

로그인 보안을 위해 HTTPS를 적용하고, 비밀번호는 사용자별 솔트를 적용한 해시값으로 저장해야 한다. 또한 MFA, 로그인 실패 횟수 제한, Rate Limiting, CAPTCHA, 유출 비밀번호 차단, 로그인 후 세션 재발급, 비정상 로그인 탐지와 로그 모니터링을 적용해야 한다.

채점 포인트

요소포함 여부
HTTPS중요
솔트 해시 저장필수
MFA중요
실패 제한·Rate Limiting중요
세션 재발급좋음
로그 모니터링좋음

실기 예제 3

문제: IDOR 취약점의 개념과 대응 방안을 설명하시오.

좋은 답안

IDOR는 사용자가 요청 파라미터의 객체 식별자를 조작하여 권한 없는 타인의 자원에 접근하는 접근통제 취약점이다. 대응 방안으로는 서버 측에서 매 요청마다 사용자 권한과 자원 소유자를 검증하고, 역할 기반 접근통제를 적용하며, 단순 순번 ID 노출을 줄이고 비정상 객체 ID 순차 접근을 로그로 모니터링해야 한다.

채점 포인트

요소포함 여부
객체 식별자 조작필수
타인 자원 접근필수
서버 측 권한 검증매우 중요
자원 소유자 검증중요
로그 모니터링좋음

실기 예제 4

문제: 세션 관리 보안 대책을 설명하시오.

좋은 답안

세션 보안을 위해 예측 불가능한 세션 ID를 사용하고, 로그인 성공 후 세션 ID를 재발급하여 세션 고정 공격을 방지해야 한다. 또한 HTTPS, HttpOnly·Secure·SameSite 쿠키 설정, 세션 타임아웃, 로그아웃 시 서버 측 세션 폐기, 중요 기능 재인증, 이상 접속 탐지를 적용해야 한다.

채점 포인트

요소포함 여부
예측 불가능한 세션 ID필수
로그인 후 재발급필수
쿠키 보안 속성중요
타임아웃·폐기중요
이상 접속 탐지좋음

실기 예제 5

문제: JWT 사용 시 보안상 주의사항을 설명하시오.

좋은 답안

JWT는 JSON 형식의 클레임을 담고 서명을 통해 위변조 여부를 검증할 수 있는 토큰 기반 인증 방식이다. 보안 운영을 위해 서명 검증, 안전한 알고리즘 사용, 짧은 만료시간 설정, Payload에 민감정보 저장 금지, HTTPS 전송, 토큰 탈취 대비 폐기·재발급 정책, 권한 클레임 검증이 필요하다.

채점 포인트

요소포함 여부
서명 검증필수
만료시간필수
민감정보 저장 금지중요
HTTPS중요
폐기·재발급 정책좋음
권한 클레임 검증좋음

실기 예제 6

문제: API 보안 대책을 설명하시오.

좋은 답안

API 보안을 위해 모든 요청에 인증을 적용하고, 사용자가 요청한 자원에 접근할 권한이 있는지 서버 측에서 검증해야 한다. 또한 입력값 검증, 응답 데이터 최소화, Rate Limiting, 토큰 만료와 폐기 정책, Mass Assignment 방지, CORS 제한, 오류 메시지 노출 제한, API 호출 로그 기록을 적용해야 한다.

채점 포인트

요소포함 여부
인증필수
인가·객체 권한 검증필수
입력값 검증중요
Rate Limiting중요
토큰 관리중요
Mass Assignment 방지좋음
로그 기록좋음

핵심 요약

개념한 줄 요약
인증사용자의 신원을 확인
인가사용자의 권한을 확인
MFA서로 다른 인증 요소 2개 이상 사용
비밀번호 해시비밀번호 원문 대신 해시값 저장
솔트해시에 추가하는 사용자별 임의 값
브루트포스가능한 비밀번호를 반복 대입
사전 공격자주 쓰는 단어와 패턴으로 추측
크리덴셜 스터핑유출 계정정보를 다른 서비스에 대입
로그인 보안HTTPS, MFA, 실패 제한, Rate Limiting
접근통제 취약점권한 검증 부족으로 비인가 접근 가능
수평 권한 상승같은 등급 사용자 간 타인 자원 접근
수직 권한 상승일반 사용자가 관리자 기능 접근
IDOR객체 ID 조작으로 타인 자원 접근
세션 고정공격자가 아는 세션 ID를 피해자가 사용하게 함
JWT서명된 JSON 기반 토큰
JWT 주의서명 검증, 만료, 민감정보 금지
API 보안인증·인가·검증·제한·기록
BOLAAPI 객체 수준 권한 검증 실패
Mass Assignment허용되지 않은 필드까지 반영
과도한 데이터 노출필요 이상의 민감정보 반환
Rate Limiting요청량 제한
CORS다른 출처 API 접근 제어

필수 암기 문장

아래 문장들은 필기와 실기 모두 중요합니다.

인증은 사용자의 신원을 확인하는 절차이고, 인가는 인증된 사용자가 특정 자원이나 기능에 접근할 권한이 있는지 확인하는 절차이다.

MFA는 지식, 소유, 생체 등 서로 다른 인증 요소를 2개 이상 결합하여 계정 탈취 위험을 줄이는 인증 방식이다.

비밀번호는 평문으로 저장하지 않고 사용자별 솔트를 적용한 해시값으로 저장해야 한다.

브루트포스 공격은 가능한 비밀번호를 무차별적으로 반복 대입하는 공격이고, 크리덴셜 스터핑은 유출된 계정 정보를 다른 서비스에 대입하는 공격이다.

세션 보안을 위해 예측 불가능한 세션 ID, 로그인 후 세션 재발급, HttpOnly·Secure·SameSite 쿠키, 세션 타임아웃, 로그아웃 시 세션 폐기를 적용해야 한다.

JWT는 JSON 형식의 클레임을 담고 서명으로 위변조 여부를 검증할 수 있는 토큰 기반 인증 방식이다.

JWT Payload는 쉽게 디코딩될 수 있으므로 민감정보를 저장하지 않아야 하며, 서버는 서명과 만료시간을 반드시 검증해야 한다.

IDOR는 요청 파라미터의 객체 식별자를 조작하여 권한 없는 타인의 자원에 접근하는 취약점이다.

IDOR 대응의 핵심은 서버 측에서 매 요청마다 사용자 권한과 자원 소유자를 검증하는 것이다.

API 보안을 위해 모든 요청에 인증과 인가를 적용하고, 입력값 검증, 응답 데이터 최소화, Rate Limiting, 토큰 관리, 로그 기록을 수행해야 한다.

Mass Assignment를 방지하려면 클라이언트가 보낸 모든 필드를 자동 반영하지 말고 허용된 필드만 명시적으로 반영해야 한다.

관리자 페이지는 MFA, 접근 IP 제한, 서버 측 권한 검증, 중요 작업 재인증, 작업 로그 기록으로 보호해야 한다.

연습 과제

다음 문제를 풀고 정답 및 해설과 대조한다.

A. 단답형

1. 인증이란 무엇인가?
2. 인가란 무엇인가?
3. 인증과 인가의 차이를 쓰시오.
4. 인증 요소 3가지를 쓰시오.
5. MFA란 무엇인가?
6. MFA가 계정 탈취 방지에 도움이 되는 이유는 무엇인가?
7. 안전한 비밀번호 정책 항목 5가지를 쓰시오.
8. 비밀번호를 평문으로 저장하면 안 되는 이유는 무엇인가?
9. 솔트란 무엇이며 왜 필요한가?
10. 브루트포스 공격이란 무엇인가?
11. 크리덴셜 스터핑이란 무엇인가?
12. 로그인 보안 대책 6가지를 쓰시오.
13. 접근통제 취약점이란 무엇인가?
14. 수평 권한 상승과 수직 권한 상승의 차이를 쓰시오.
15. IDOR란 무엇인가?
16. IDOR 대응 방안 4가지를 쓰시오.
17. 관리자 페이지 보호 대책 5가지를 쓰시오.
18. 세션 고정 공격이란 무엇인가?
19. 세션 관리 보안 대책 6가지를 쓰시오.
20. JWT란 무엇인가?
21. JWT의 구성 요소 3가지를 쓰시오.
22. JWT 사용 시 보안상 주의사항 5가지를 쓰시오.
23. API 보안이 중요한 이유는 무엇인가?
24. API 보안 대책 8가지를 쓰시오.
25. Mass Assignment란 무엇인가?
26. 과도한 데이터 노출이 위험한 이유는 무엇인가?
27. API Rate Limiting이 필요한 이유는 무엇인가?
28. CORS 설정 시 주의할 점은 무엇인가?

B. 상황 매칭 문제

아래 상황에 적합한 공격, 취약점 또는 대응책을 쓴다.

29. 비밀번호를 가능한 조합으로 계속 대입하고 있다.
30. 다른 사이트에서 유출된 아이디와 비밀번호로 로그인 시도하고 있다.
31. 로그인 성공 후에도 기존 세션 ID가 그대로 유지된다.
32. URL의 userId 값을 바꾸자 다른 사용자의 정보가 조회되었다.
33. 일반 사용자가 관리자 API를 직접 호출해 성공했다.
34. 클라이언트가 role=admin 값을 보내자 서버가 그대로 반영했다.
35. API 응답에 화면에 필요 없는 passwordHash와 주민등록번호가 포함되었다.
36. Authorization Bearer 토큰이 만료시간 없이 장기간 유효하다.
37. JWT Payload에 주민등록번호와 비밀번호가 들어 있다.
38. API를 짧은 시간에 수천 번 호출하여 사용자 정보를 수집하고 있다.
39. 허용되지 않은 외부 도메인에서 인증정보 포함 API 요청이 가능하다.
40. 관리자 페이지가 외부 전체 IP에서 접근 가능하고 MFA가 없다.

C. 실기형 답안 작성

다음 6문제는 2~3문장으로 답안을 작성한다.

41. 인증과 인가의 차이를 설명하시오.

42. 로그인 보안 대책을 설명하시오.

43. 세션 관리 보안 대책을 설명하시오.

44. IDOR 취약점의 개념과 대응 방안을 설명하시오.

45. JWT 사용 시 보안상 주의사항을 설명하시오.

46. API 보안 대책을 설명하시오.

보완 학습 및 연습 과제 정답

OAuth, OIDC, FIDO2와 API 권한 취약점

OAuth 2.0은 인가 프레임워크이고, OIDC는 OAuth 2.0 위에 신원 확인을 위한 ID Token을 추가한 인증 계층이다. Access Token은 API 접근 권한을 나타내고 Refresh Token은 새 Access Token을 발급받는 데 사용하므로 저장 위치, 회전, 탈취 탐지, 폐기 절차가 중요하다. Token Revocation은 로그아웃, 기기 분실, 계정 탈취 의심 시 기존 토큰을 더 이상 사용할 수 없게 하는 통제이다.

FIDO2/WebAuthn은 공개키 기반 인증으로 서버에는 공개키만 저장하고 사용자의 개인키는 인증장치에 보관한다. 피싱 저항성이 높지만, 등록·분실·복구 절차와 백업 인증수단 관리가 필요하다.

BOLA는 객체 단위 권한 검증 실패이고, BFLA는 기능 단위 권한 검증 실패이다. GET /users/2/orders에서 타인 주문이 보이면 BOLA, 일반 사용자가 POST /admin/refund를 호출해 성공하면 BFLA로 판단한다.

정답 및 해설

A. 단답형 예시 정답: 1 신원 확인. 2 권한 확인. 3 인증은 누구인지, 인가는 무엇을 할 수 있는지. 4 지식, 소유, 생체. 5 둘 이상 요소 결합 인증. 6 하나의 요소 탈취만으로 로그인하기 어려움. 7 길이, 복잡도, 재사용 제한, 유출 비밀번호 차단, 잠금. 8 유출 시 즉시 악용. 9 사용자별 난수로 같은 비밀번호의 해시 차별화. 10 무차별 대입. 11 유출 계정 대입. 12 잠금, MFA, Rate Limit, 로깅, 알림, 유출 비밀번호 차단. 13 권한 검증 실패. 14 타인 자원 접근과 관리자 기능 접근. 15 객체 ID 조작 접근. 16 서버 권한 검증, 소유자 확인, 간접 식별자, 로그. 17 MFA, IP 제한, 권한 검증, 재인증, 로그. 18 공격자가 아는 세션 사용 강제. 19 재발급, HttpOnly, Secure, SameSite, 만료, 폐기. 20 JSON 기반 서명 토큰. 21 Header, Payload, Signature. 22 서명, 만료, 민감정보 금지, 폐기, 보관. 23 대외 연동과 자동화 공격 노출. 24 인증, 인가, 검증, 최소 응답, 제한, 토큰 관리, 로깅, CORS. 25 허용되지 않은 필드 자동 반영. 26 민감정보 노출. 27 남용과 수집 방지. 28 와일드카드와 인증정보 허용 주의.

B. 상황 매칭 정답: 29 브루트포스, 30 크리덴셜 스터핑, 31 세션 고정, 32 IDOR 또는 BOLA, 33 BFLA, 34 Mass Assignment, 35 과도한 데이터 노출, 36 토큰 만료 관리 실패, 37 JWT 민감정보 저장 금지 위반, 38 Rate Limiting, 39 CORS 오설정, 40 관리자 페이지 보호 미흡.

C. 실기형 채점 기준: 핵심 키워드는 인증·인가 구분, MFA, 세션 재발급, JWT 서명·만료, OAuth/OIDC 구분, Refresh Token 보호·폐기, FIDO2 공개키 인증, BOLA/BFLA이다. 부분점은 개념 25%, 취약점 원인 25%, 대응 40%, 로그·운영 10%로 부여한다. 클라이언트 화면 숨김을 인가 통제로 보거나 JWT Payload를 비밀 저장소로 설명하면 감점한다.

목차

학습 목표
학습 내용의 큰 그림
인증
인증이란?
인증 요소
MFA
MFA란?
MFA가 필요한 이유
비밀번호 보안
안전한 비밀번호 정책
비밀번호 저장 보안
솔트
비밀번호 공격
브루트포스 공격
사전 공격
크리덴셜 스터핑
로그인 보안 대책
인가
인가란?
인증과 인가 비교
접근통제 취약점
접근통제 취약점이란?
접근통제 취약점의 유형
IDOR
IDOR란?
IDOR의 원인
IDOR 대응책
관리자 페이지 보호
세션 관리 보안
세션 고정 공격
세션 관리 대책
토큰 기반 인증
JWT
JWT란?
JWT의 장점과 주의점
JWT 보안 대책
API 보안
API란?
API 보안이 중요한 이유
API 주요 취약점
BOLA
Mass Assignment
Mass Assignment란?
과도한 데이터 노출
API Rate Limiting
CORS 기초
API 보안 대책 전체 정리
인증·인가·API 로그 분석
인증 로그에서 볼 징후
인가 로그에서 볼 징후
API 로그에서 볼 징후
내용 연결 정리
시험에 나오는 포인트
필기형 문제풀이
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
문제 7
문제 8
문제 9
문제 10
문제 11
문제 12
실기형 답안 훈련
실기 예제 1
좋은 답안
채점 포인트
실기 예제 2
좋은 답안
채점 포인트
실기 예제 3
좋은 답안
채점 포인트
실기 예제 4
좋은 답안
채점 포인트
실기 예제 5
좋은 답안
채점 포인트
실기 예제 6
좋은 답안
채점 포인트
핵심 요약
필수 암기 문장
연습 과제
A. 단답형
B. 상황 매칭 문제
C. 실기형 답안 작성
보완 학습 및 연습 과제 정답
OAuth, OIDC, FIDO2와 API 권한 취약점
정답 및 해설