홈/보안/OWASP API Security Top 10: 실전 취약점 분석과 방어 코드
보안OWASPAPI보안

OWASP API Security Top 10: 실전 취약점 분석과 방어 코드

API 보안이 중요한 이유 API는 현대 애플리케이션의 핵심입니다. OWASP는 2023년 API Security Top 10을 업데이트했습니다. API1:2023 — Broken Object Level Authorization (BOLA) 가장 흔하고 치명적인 취약점입니다. …

OWASP API Security Top 10: 실전 취약점 분석과 방어 코드
목차
  1. API 보안이 중요한 이유
  2. API1:2023 — Broken Object Level Authorization (BOLA)
  3. API2:2023 — Broken Authentication
  4. API3:2023 — Broken Object Property Level Authorization
  5. API4:2023 — Unrestricted Resource Consumption
  6. API5~10 핵심 요약
  7. 참고: 공식 문서

API 보안이 중요한 이유

API는 현대 애플리케이션의 핵심입니다. OWASP는 2023년 API Security Top 10을 업데이트했습니다.

API1:2023 — Broken Object Level Authorization (BOLA)

가장 흔하고 치명적인 취약점입니다.

취약한 코드

JavaScript
// GET /api/orders/{orderId}
app.get('/api/orders/:orderId', async (req, res) => {
  // 문제: 현재 사용자 소유 여부 확인 없음
  const order = await Order.findById(req.params.orderId);
  res.json(order);
});

수정된 코드

JavaScript
app.get('/api/orders/:orderId', authenticate, async (req, res) => {
  const order = await Order.findOne({
    _id: req.params.orderId,
    userId: req.user.id  // 소유자 검증 필수
  });
  if (!order) return res.status(403).json({ error: 'Forbidden' });
  res.json(order);
});

API2:2023 — Broken Authentication

안전한 JWT 설정

JavaScript
import jwt from 'jsonwebtoken';

const token = jwt.sign(
  { userId: user.id },
  process.env.JWT_SECRET,
  { algorithm: 'HS256', expiresIn: '1h' }
);

// 검증 시 알고리즘 명시 필수
const decoded = jwt.verify(token, process.env.JWT_SECRET, {
  algorithms: ['HS256']
});

API3:2023 — Broken Object Property Level Authorization

JavaScript
// 잘못된 예: 전체 객체 반환
res.json(user);  // password_hash, internal_id 등 포함

// 올바른 예: 필요한 필드만 선택
const { id, name, email } = user;
res.json({ id, name, email });

API4:2023 — Unrestricted Resource Consumption

JavaScript
import rateLimit from 'express-rate-limit';

const limiter = rateLimit({
  windowMs: 15 * 60 * 1000,
  max: 100,
  message: { error: 'Too many requests' }
});

app.use('/api/', limiter);

API5~10 핵심 요약

순위취약점핵심 대응
API5Function Level Authorization역할 기반 접근제어(RBAC)
API6Unrestricted Business Flows비즈니스 로직 레이트리밋
API7Server Side Request ForgeryURL 허용 목록 검증
API8Security Misconfiguration불필요한 HTTP 메서드 비활성화
API9Improper Inventory ManagementAPI 버전 관리
API10Unsafe Consumption of APIs서드파티 API 응답 검증

API 보안은 개발 단계부터 시작해야 합니다. 배포 후 수정은 비용이 10~100배 더 듭니다.

참고: 공식 문서

이 글에서 다루는 동작·설정·에러의 1차 출처는 다음 공식 문서입니다. 버전별 옵션과 정확한 동작은 여기서 확인하세요.

✦ ✦ ✦
출처·검증 안내

글마다 출처와 확인 범위가 다릅니다. 아래에 확인일·확인 범위·출처가 기록된 글만 그 범위에서 확인된 것입니다. 기록이 없는 글은 적용 전 사용 중인 버전의 공식 문서로 직접 확인하고, 오류는 이메일로 알려주세요. 편집 정책 · 이메일로 제보

이 글에는 사람이 확인한 날짜·범위 기록이 아직 없습니다.

발행 ·
주제 관련 공식 문서(자동 연결 · 문장별 근거 아님)OWASP 공식 문서 ↗

댓글

첫 번째 댓글을 남겨보세요.