메인 콘텐츠로 건너뛰기
우리는 프라이버시가 특권이 아닌 권리이며, 우리 회사의 토대에 깊이 스며 있다고 믿습니다. X 개발자 플랫폼을 사용하고 개발자 정책을 준수함으로써, 여러분은 X에서의 공적 대화를 뒷받침하고 우리의 프라이버시에 대한 약속을 지키는 데 핵심적인 역할을 합니다. 여러분과 여러분의 앱 사용자 데이터 보호를 위해 보안을 고려해 개발하는 것의 중요성을 상기드립니다. 보안 침해 위협으로부터의 방어는 여러분의 책임이며, X 이용자를 보호하는 일은 우리의 공동 책임입니다. 이 페이지는 안전한 애플리케이션을 구축하고 데이터와 접근 권한을 가능한 한 안전하게 유지하는 데 대한 기대사항을 설명합니다.
X Developer Platform에서 제공되는 보안 기술(예: 인증, TLS, 앱 권한)과 함께, X 사용자 관점에서의 타사 애플리케이션 및 세션 사용 관련 안내도 숙지해 주시기 바랍니다.

보안 문제 보고

X Developer Platform 사용자는 보안 사고가 발생했다고 처음 의심한 시점으로부터 48시간 이내에 X 취약점 신고 프로그램을 통해 반드시 X에 통지해야 합니다.

보안 모범 사례

X 개발자 플랫폼을 포함해 인터넷 전반에서 구축 작업을 진행할 때 다음 사항을 유의해 주십시오.

설계 단계부터 보안 고려

위협 모델 평가 및/또는 침투 테스트를 수행할 보안 전문가 고용을 검토하세요. 신뢰할 수 있는 보안 업체는 문제를 찾아내기 위해 깊이 있게 조사합니다. X가 이러한 사고방식을 어떻게 채택했는지는 블로그 게시글에서 확인하세요. 또한 X는 모든 파트너에게 다음 사항을 요구합니다.
  • 안전한 리포지토리에서 코드를 관리할 것
  • 시스템 개발 생명주기(SDLC) 전반에 걸쳐 위험 분석을 수행할 것
  • SDLC 전 과정에서 보안 문제가 식별되고 완화되도록 보장할 것
  • SDLC 전반에 걸쳐 환경 간 분리가 유지되도록 보장할 것
  • 모든 테스트 결함이 수정되고, 재검증되어, 종결되도록 보장할 것

모니터링하고 알림 받기

웹 앱에 문제가 있다고 의심될 때, 어떻게 확실히 확인할 수 있을까요? 로그를 체계적으로 남기고, 중대한 예외와 오류에 대한 알림을 받도록 설정하세요. 핵심 지표로 대시보드를 구성해 문제 징후를 한눈에 파악할 수 있도록 하는 것도 좋습니다.

신고 채널 만들기

사용자들이 앱에서 겪은 잠재적 보안 문제를 쉽게 제보할 수 있도록 하세요. X 사용자와 데이터에 영향을 미치는 문제가 발견되면 해당 문제를 X에 보고하는 것 역시 귀하의 책임입니다. 보안 사고 발생 시 영향을 받는 사용자에게 통지하기 위한 실행 계획과 절차를 미리 마련해 두세요.

충분한 테스트

엔드투엔드 테스트가 철저하며 무단 접근과 같은 보안 시나리오에서의 예상 실패를 포함하도록 최신 상태인지 확인하세요. 공격자의 관점에서 사고하고, 공격자가 X 데이터나 권한 있는 기능에 무단으로 접근하려는 시도를 차단하도록 설계된 시스템 테스트를 구성하세요.

API 키와 토큰 보안

X 플랫폼의 개발자는, 사용자가 본인의 Developer 앱을 승인했다는 전제하에 X에 저장된 본인 데이터와 사용자 데이터를 프로그래밍 방식으로 액세스할 수 있습니다. 모든 API 요청은 Developer 앱의 키와 시크릿, 그리고 경우에 따라 권한을 부여한 사용자의 액세스 토큰을 사용하여 OAuth로 인증되어야 합니다. 자격 증명을 안전하게 보호하는 것은 개발자의 책임입니다. 권장 모범 사례는 다음과 같습니다:
  • 비밀번호/토큰 순환 갱신 정책을 운영하세요.
  • 필요한 경우 항상 민감한 데이터를 암호화하고, 초기 단계에서 과도하게 복호화하지 마세요.
  • 사용자의 액세스 토큰을 암호화된 저장소에 보관하세요.
  • 유출이 의심되면 키와 토큰을 재생성하거나 무효화하세요.
X의 OAuth로 디버깅하고 빌드하는 방법에 대한 추가 논의는 커뮤니티 포럼의 보안 카테고리를 방문하세요.

입력 유효성 검사

사용자가 유효하고 신뢰할 수 있는 데이터를 제공한다고 가정하지 마세요. X API 요청에 포함될 수 있는 사용자 입력 데이터는 모두 정제하세요. 애플리케이션에서 허용하는 입력 유형만 허용 목록에 등록하고, 목록에 없는 입력은 모두 폐기하세요.

암호화된 통신

X는 모든 API 요청이 TLS를 통해 이루어져야 합니다. 가능한 경우에는 자체 서버와의 통신도 암호화해야 합니다.

노출된 디버깅 정보

디버깅 화면이나 로그를 통해 민감한 X 데이터나 자격 증명이 노출되지 않도록 주의하세요. 일부 웹 프레임워크는 애플리케이션이 적절히 구성되지 않으면 디버깅 정보에 쉽게 접근할 수 있게 합니다. 데스크톱 및 모바일 개발의 경우 디버깅 플래그나 심볼이 활성화된 상태로 빌드를 실수로 배포하기 쉽습니다. 이러한 설정에 대한 빌드 검사를 배포/빌드 프로세스에 포함하세요. 또한 보고 목적으로 스택 트레이스나 크래시 덤프를 공유할 때는 비공개 X 사용자의 데이터가 마스킹되었는지 확인하세요.

필터링되지 않은 입력, 이스케이프되지 않은 출력

입력 검증을 기억하기 쉬운 방법 중 하나는 FIEO입니다: Filter Input, Escape Output 애플리케이션 외부에서 들어오는 모든 입력을 필터링하세요. 여기에는 X API 데이터, 쿠키 데이터, 사용자가 제공한 폼 입력, URL 매개변수, 데이터베이스에서 가져온 데이터 등이 포함됩니다. 또한 애플리케이션이 내보내는 모든 출력을 이스케이프하세요. 여기에는 데이터베이스 서버로 전송되는 SQL, 사용자 브라우저로 보내는 HTML, 다른 시스템으로 전송되는 JSON 출력, 셸 프로그램으로 보내는 명령 등이 포함됩니다.

교차 사이트 스크립팅(XSS)

XSS 공격은 일반적으로 웹에서 가장 흔한 보안 문제로 꼽힙니다. 공격자가 자신의 JavaScript 코드를 애플리케이션에 주입할 수 있다면 악의적인 행위를 할 수 있습니다. 신뢰할 수 없는 사용자가 제공한 데이터를 저장하고 표시하는 모든 위치는 검증하고, 정제(sanitize)하며, HTML 이스케이프 처리를 해야 합니다. 이를 올바르게 구현하기는 어렵습니다. 해커들이 XSS 공격을 유도하는 다양한 기법을 보유하고 있기 때문입니다. 사용 중인 언어 또는 웹 개발 프레임워크에는 교차 사이트 스크립팅을 방어하기 위한 널리 사용되고 충분히 검증된 메커니즘이 있을 가능성이 큽니다. 반드시 이를 활용하세요.

SQL 인젝션

애플리케이션에서 데이터베이스를 사용한다면 SQL 인젝션에 유의해야 합니다. 입력을 받는 모든 지점은 공격자가 입력 필드를 탈출해 데이터베이스에 침투할 수 있는 잠재적 표적입니다. SQL 인젝션을 체계적으로 방지하는 데이터베이스 라이브러리를 사용하세요. 그 방식을 벗어나 직접 SQL을 작성해야 한다면, 이 형태의 공격에 노출되지 않도록 강도 높은 테스트를 충분히 마련하세요. SQL 인젝션을 방어하는 주요 방법은 SQL 문을 구성하기 전에 입력을 이스케이프 처리하는 것과, 매개변수화된 입력으로 문을 생성하는 것입니다. 후자가 권장되며, 개발자 실수에 덜 취약합니다.

교차 사이트 요청 위조(CSRF)

애플리케이션으로의 요청이 정말로 귀하의 애플리케이션에서 비롯된 것인지 확신하십니까? CSRF 공격은 로그인한 사용자가 아무런 표시 없이 동작을 수행하는 URL을 열도록 강제함으로써 이러한 불확실성을 악용합니다. Developer 앱의 경우, 이는 공격자가 귀하의 앱을 이용해 사용자가 원치 않는 게시물을 올리거나 스팸 계정을 팔로우하도록 강제하는 것을 의미할 수 있습니다. CSRF에 가장 철저히 대응하는 방법은 모든 폼에 신뢰할 수 있는 위치에 저장된 무작위 토큰을 포함하는 것입니다. 폼에 올바른 토큰이 없으면 오류를 발생시키십시오. 최신 웹 프레임워크는 이를 체계적으로 처리하는 방법을 제공하며, 운이 좋다면 기본값으로 활성화되어 있을 수도 있습니다. 간단한 예방 조치(그러나 결코 유일하게 취해야 할 조치는 아님)는 데이터를 생성, 수정 또는 삭제하는 모든 동작에 대해 POST 요청을 요구하도록 하는 것입니다.

레이트 리밋 부족

잠재적 스패머와 공격자의 속도를 늦추기 위해, 필요한 경우 CAPTCHA를 사용하세요.
X 자체에 직접적인 영향을 미치는 보안 문제를 발견했다면 취약점 버그 바운티 프로그램을 통해 제보해 주세요.