コア要件
TLS が必須
すべての API リクエストは HTTPS を使用する必要があります。平文の HTTP は拒否されます。
認証情報のセキュリティ
API キーやトークンをクライアントサイドのコード、ログ、リポジトリで決して公開しないでください。
認証情報の保護
1
環境変数を使用する
認証情報はコード内ではなく環境変数に保存します。
2
シークレットを絶対にコミットしない
認証情報ファイルを
.gitignore に追加します。git-secrets のようなツールを使って、誤ってコミットしてしまうことを防ぎます。3
定期的にローテーションする
キーは定期的に、また侵害が疑われる場合には直ちに再発行します。
4
最小限の権限にとどめる
App が実際に必要とする OAuth スコープのみをリクエストします。
認証情報が漏えいした場合
- 開発者コンソールでただちに再生成する
- 古いトークンを失効させる — 再生成により古い認証情報は自動的に無効化される
- 利用状況を監査する — 不正な API アクティビティがないか確認する
- アプリを更新する — すべての環境に新しい認証情報をデプロイする
アプリケーションのセキュリティ
入力検証
出力のエンコード
防ぐべき代表的な脆弱性
OAuth セキュリティ
state パラメータ
state パラメータを使用してください。
トークンの保存
セキュアな開発プラクティス
セキュリティ監査
定期的にセキュリティレビューとペネトレーションテストを実施してください。
依存関係のスキャン
依存関係を常に最新の状態に保ってください。脆弱なパッケージを検出するツールを使用してください。
ロギング
セキュリティイベントはログに記録しますが、認証情報や機密データは決してログに残さないでください。
モニタリング
異常な API 利用パターンに対するアラートを設定してください。
セキュリティ上の問題の報告
X Bug Bounty
HackerOne を通じて、X のシステムにおける脆弱性を報告してください。
Your app incident
X データを利用する自分の App が侵害された場合も、同じ窓口から報告してください。
コンプライアンスチェックリスト
X API 開発者向けセキュリティ要件
X API 開発者向けセキュリティ要件
- すべての API リクエストで TLS/HTTPS を使用している
- 認証情報が安全に保管されている (コードやログ内に含めない)
- ユーザートークンが保存時に暗号化されている
- すべてのユーザー入力データに対して入力検証を実施している
- XSS を防止するための出力エンコードを行っている
- OAuth フローで CSRF 対策を実装している
- セキュリティログが有効化されている (機密データは含めない)
- インシデント対応計画が文書化されている
- 依存関係が定期的に更新されている
- 必要最小限の OAuth スコープのみを要求している
リソース
認証ガイド
OAuth を正しく実装してください。
App の権限
必要最小限の権限のみを設定してください。