Skip to main content
セキュアなアプリケーションを構築することで、ユーザーと 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. Developer Console直ちに再生成
  2. 古いトークンを無効化 — 再生成すると古い認証情報は自動的に無効になります
  3. 使用状況を監査 — 不正な API アクティビティがないか確認します
  4. アプリを更新 — すべての環境に新しい認証情報をデプロイします

アプリケーションのセキュリティ

入力の検証

ユーザー入力を信頼しないでください。使用前にすべてのデータを検証およびサニタイズしてください:
# 悪い例 - インジェクション脆弱性
query = f"from:{user_input}"

# 良い例 - まず入力を検証
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;

防止すべき一般的な脆弱性

脆弱性予防策
XSSレンダリング前にすべてのユーザー生成コンテンツをエスケープ
CSRFフォームで anti-CSRF トークンを使用、OAuth state パラメータを検証
SQL インジェクションパラメータ化されたクエリを使用、ユーザー入力を絶対に連結しない
オープンリダイレクトコールバック 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 tokens環境変数または安全な設定

安全な開発プラクティス

セキュリティ監査

定期的なセキュリティレビューとペネトレーションテストを実施します。

依存関係のスキャン

依存関係を最新に保ちます。脆弱なパッケージを検出するツールを使用します。

ログ記録

セキュリティイベントをログに記録しますが、認証情報や機密データは絶対に記録しないでください。

モニタリング

異常な API 使用パターンに対するアラートを設定します。

セキュリティ問題の報告

X に影響するセキュリティ脆弱性を発見した場合:
48 時間以内に報告。 X Developer Platform のユーザーは、セキュリティインシデントが疑われてから 48 時間以内に X に通知する必要があります。

X Bug Bounty

HackerOne を通じて X のシステムの脆弱性を報告してください。

あなたのアプリのインシデント

X データを使用するアプリで侵害が発生した場合、同じチャネルから報告してください。

コンプライアンスチェックリスト

  • すべての API リクエストが TLS/HTTPS を使用
  • 認証情報が安全に保管 (コードやログ内ではない)
  • ユーザートークンが保存時に暗号化
  • すべてのユーザー提供データに対する入力検証
  • XSS を防ぐための出力エンコーディング
  • OAuth フローでの CSRF 保護
  • セキュリティロギングが有効 (機密データなし)
  • インシデント対応計画が文書化
  • 依存関係が定期的に更新
  • 最小限の OAuth スコープがリクエスト

リソース

認証ガイド

OAuth を正しく実装します。

アプリの権限

最小限の必要な権限を設定します。