Skip to content

セキュリティガイドライン

📢 ProtoPedia API Ver 2.0 で利用する Bearer Token についての正確な情報は、必ず公式ドキュメントを参照してください。 (PROMIDASの作者は ProtoPedia API Ver 2.0 の開発者ではありません)

ProtoPedia API Ver 2.0 · Apiary ProtoPedia API Ver 2.0 · Apiary

このドキュメントでは、Bearer Token の適切な取り扱いとセキュリティに関する推奨事項を説明します。

📖 目次

重要な前提

⚠️ このドキュメントの内容は推測に基づいています

ProtoPedia API Ver 2.0の公式ドキュメントには、 Bearer Token の取り扱いに関する明確な指針が記載されていません。 以下の内容は、 Bearer Token の形式やAPIの挙動、ドキュメントの記載から推測したものであり、実際の仕様や想定される用途は異なる可能性があります。

利用者自身の判断と責任でTOKENを管理してください。

Bearer Tokenの特性

観察される特徴

  • 形式: 32文字の16進数文字列
  • 構造: JWT等の署名付きトークンとは異なるシンプルな形式
  • 公式情報: APIドキュメントに取り扱いに関する明確な記載なし
  • 推測される目的: ユーザー識別と緊急時のTOKEN無効化(推測)

不明な点

以下の重要な情報が公式に明示されていないため、慎重な対応が必要です:

  • TOKEN漏洩時の影響範囲
  • 有効期限の有無と期間
  • 再発行ポリシー
  • Rate Limitの詳細仕様
  • アクセス可能なデータの範囲
  • 書き込み操作の権限範囲

リスクレベル別ガイドライン

公式の取り扱い指針がなく、書き込み操作も可能なため、慎重な対応を推奨します。

🔴 絶対に避けるべき

リスクが確実に高い行為

GitHubなど公開リポジトリへのコミット
  • 永続的に公開され、取り消し不可
  • 検索エンジンでインデックスされる可能性
  • 第三者による悪用のリスク
ソースコードへのハードコード
  • ビルド後のコードで確認可能
  • デコンパイルやソース閲覧で露出

対策

  • 環境変数(.envファイル)を使用
  • .gitignoreに必ず.envを追加
  • Secrets管理サービスを利用(GitHub Secrets、Vercel環境変数等)

🟡 慎重に判断すべき

フロントエンド(ブラウザ)での使用

潜在的なリスク
  • DevToolsで確認可能: ブラウザの開発者ツールでTOKENが見える
  • 書き込み操作を含む不正使用: API仕様上、POST/DELETE操作が可能
  • Rate Limit消費: 全ユーザーで共有されるRate Limitへの影響(仕様不明)
  • 影響範囲が不明: ユーザーデータへのアクセス範囲が不明確

⚠️ PROMIDASは読み取り専用ですが、TOKEN自体は書き込み可能なため注意が必要です

許容される可能性がある場合

以下の条件をすべて満たす場合のみ、リスクを理解した上で検討可能:

  • 短期間のデモ・プロトタイプ(限定的な用途)
  • 影響範囲とリスクを完全に理解している
  • Rate Limitが問題にならない小規模利用
  • 緊急時にTOKENを無効化できる準備がある
本番環境では強く非推奨

🟢 強く推奨する

バックエンド(サーバー)での使用

メリット
  • TOKEN管理が容易: 環境変数やSecrets管理で安全に保管
  • 外部からアクセス不可: ユーザーのブラウザからTOKENが見えない
  • ログ・監視が可能: アクセスログや異常検知が実装可能
  • 書き込み操作を制御可能: 必要に応じて機能を制限できる
実装例

Next.js API Routes:

typescript
// pages/api/prototypes.ts (サーバーサイド)
import { createPromidasForServer } from '@f88/promidas';

export async function GET() {
    // サーバー用の最適化設定 (10分TTL, warnログ)
    const repo = createPromidasForServer();

    const setupResult = await repo.setupSnapshot({ limit: 1000 });
    if (!setupResult.ok) {
        return Response.json({ error: setupResult.message }, { status: 500 });
    }

    const data = await repo.getAllFromSnapshot();
    return Response.json(data);
}

環境変数設定:

bash
# .env (Gitにコミットしない)
PROTOPEDIA_API_V2_TOKEN=your-token-here
docker
# .gitignore
.env
.env.local

PROMIDAS

サポートするエンドポイント

PROMIDASは GET https://protopedia.net/v2/api/prototype/list(作品一覧取得)のみをサポートしています。

これらの操作が必要な場合は、ProtoPedia APIを直接使用する必要があります。

さらに詳しく

関連ドキュメント

公式リソース

サポート

セキュリティに関する質問や報告は:

⚠️ 重大なセキュリティ問題を発見した場合は、公開Issueではなく直接プロジェクトメンテナーに連絡してください。

ライセンス

MIT License - 詳細はLICENSEを参照してください。