메인 콘텐츠로 건너뛰기
보안이 뛰어난 애플리케이션을 구축하면 사용자와 X 플랫폼 모두를 보호할 수 있습니다. 이 가이드는 X API 개발자를 위한 핵심 보안 모범 사례를 다룹니다.

핵심 요구 사항

TLS 필수

모든 API 요청은 HTTPS를 사용해야 합니다. 암호화되지 않은 일반 HTTP는 허용되지 않습니다.

자격 증명 보안

API 키나 토큰을 클라이언트 측 코드, 로그 또는 리포지토리에 절대 노출하지 마세요.

자격 증명 보호

API 키와 토큰은 앱의 열쇠와 같습니다. 다음과 같이 안전하게 보호하세요:
1

환경 변수 사용

자격 증명은 코드에 직접 작성하지 말고 환경 변수에 저장하세요.
export X_API_KEY="your-api-key"
export X_API_SECRET="your-api-secret"
2

비밀 정보를 커밋하지 않기

자격 증명 파일을 .gitignore에 추가하세요. git-secrets와 같은 도구를 사용해 실수로 커밋되는 일을 방지하세요.
3

정기적으로 교체

키를 주기적으로 재발급하고, 유출이 의심되면 즉시 교체하세요.
4

최소 권한 사용

앱이 실제로 필요로 하는 OAuth 스코프만 요청하세요.

자격 증명이 유출된 경우

  1. 개발자 콘솔에서 즉시 재발급합니다.
  2. 이전 토큰을 폐기합니다 — 재발급하면 이전 자격 증명은 자동으로 무효화됩니다.
  3. 사용 내역을 점검합니다 — 무단 API 활동이 있었는지 확인합니다.
  4. 앱을 업데이트합니다 — 모든 환경에 새 자격 증명을 배포합니다.

애플리케이션 보안

입력 검증

사용자 입력값을 절대 신뢰하지 마세요. 데이터를 사용하기 전에 항상 검증하고 정제하세요:
# Bad - vulnerable to injection
query = f"from:{user_input}"

# Good - validate input first
import re
if re.match(r'^[a-zA-Z0-9_]{1,15}$', user_input):
    query = f"from:{user_input}"

출력 인코딩

XSS를 방지하기 위해 HTML에 출력하기 전에 X API 데이터를 이스케이프 처리하세요:
// 나쁨 - XSS에 취약
element.innerHTML = tweet.text;

// 좋음 - HTML 이스케이프
element.textContent = tweet.text;

예방해야 할 일반적인 취약점

취약점 (Vulnerability)예방 방법 (Prevention)
XSS렌더링 전에 사용자가 생성한 모든 콘텐츠를 이스케이프 처리하세요
CSRF폼에 CSRF 방지 토큰을 사용하고 OAuth state 매개변수를 검증하세요
SQL Injection매개변수화된 쿼리를 사용하고, 사용자 입력을 문자열로 결합하지 마세요
Open redirects콜백 URL이 허용 목록에 있는지 검증하세요

OAuth 보안

State 매개변수

CSRF를 방지하기 위해 OAuth 플로우에서는 항상 state 매개변수를 사용해야 합니다.
import secrets

# 인증 전 state 생성
state = secrets.token_urlsafe(32)
session['oauth_state'] = state

# 콜백 후 state 확인
if request.args.get('state') != session.get('oauth_state'):
    abort(403)  # State 불일치 - CSRF 공격 가능성

토큰 저장

토큰 유형저장 권장 사항
액세스 토큰 (Access tokens)암호화된 데이터베이스 또는 보안 금고
리프레시 토큰 (Refresh tokens)추가 액세스 제어가 적용된 암호화된 데이터베이스
Bearer 토큰 (Bearer tokens)환경 변수 또는 보안 설정

보안 개발 모범 사례

보안 감사

정기적으로 보안 검토와 침투 테스트를 수행하세요.

종속성 스캔

종속성을 최신 상태로 유지하세요. 취약한 패키지를 탐지하는 도구를 사용하세요.

로깅

보안 이벤트는 로깅하되, 인증 정보나 민감한 데이터는 절대 로그에 남기지 마세요.

모니터링

비정상적인 API 사용 패턴에 대한 알림을 설정하세요.

보안 문제 신고

X에 영향을 미치는 보안 취약점을 발견한 경우:
48시간 이내에 신고하세요. X Developer Platform 사용자는 보안 사고가 의심된 시점으로부터 48시간을 넘기지 않고 X에 통지해야 합니다.

X Bug Bounty

HackerOne을 통해 X 시스템의 취약점을 신고하세요.

Your app incident

X 데이터를 사용하는 앱이 침해된 경우, 동일한 채널을 통해 신고하세요.

컴플라이언스 체크리스트

  • 모든 API 요청에 TLS/HTTPS 사용
  • 인증 정보를 안전하게 저장 (코드나 로그에 저장하지 않음)
  • 사용자 토큰을 저장 시 암호화
  • 사용자 제공 데이터에 대한 입력 검증 수행
  • XSS 방지를 위한 출력 인코딩 적용
  • OAuth 플로우에 대한 CSRF 방지 적용
  • 보안 로깅 활성화 (민감한 데이터 제외)
  • 사고 대응 계획 문서화
  • 의존성 정기적으로 업데이트
  • 최소한의 OAuth 스코프만 요청

리소스

인증 가이드

OAuth를 올바르게 구현하세요.

App 권한

필요한 최소 권한만 설정하세요.