PROOF 01 · ZERO SECRET LEAKAGE本体サーバーAPIキー・Proxy認証情報の完全秘匿
ユーザーが初期設定やマイページでプラグインの詳細設定を「スキップ(あとで設定)」した場合、Cloudflare Worker エッジ内部でのみ env.YOUTUBE_API_KEY や env.STREAM_PROXY を解決し、内部コンテナ(LightContainer / StreamContainer)へのみ渡します。ブラウザへのレスポンスには redactSensitiveInfo() フィルタが常時適用され、キーや http://user:pass@host 形式のProxy認証情報がクライアントに漏洩することは100%ありません。
PROOF 02 · PER-PLAYER AES-256-GCMブラウザ保持型を廃止し、再生ページ毎にD1で暗号化管理
従来のブラウザ localStorage 保存を廃止し、各ユーザーの再生ページ({username}.mycodec.app)に紐づく設定として Cloudflare D1(mc_player_configs テーブル)に保存。APIキー・Cookie・専用Proxyは Web Crypto API の AES-256-GCM(PBKDF2 100,000回鍵導出+96bitランダムIV) で暗号化され、v1.<iv>.<ciphertext> 形式で保管されます。
PROOF 03 · HEADER SPOOFING DEFENSE外部からの内部設定ヘッダー偽装(Spoofing)完全遮断
エッジ Worker(cf/worker.mjs)および Node ゲートウェイ(server.js)の双方で、外部リクエストに含まれる x-internal-player-config ヘッダーを受信直後に強制削除(Strip)します。セッション署名(HMAC-SHA256)とホスト名検証を通過したオーナーのリクエストに対してのみ、Worker が D1 から復号した設定を注入します。
PROOF 04 · 1-PLAYER & NO CONCURRENT STREAM1人1再生ページ上限 & 同時視聴不可(排他ストリームロック)
1つのGoogleアカウントにつき発行できるサブドメインは1つ({username}.mycodec.app)のみ。さらに D1 の mc_active_streams テーブルによる排他リースマネージャー(acquireOrVerifyStreamLock)により、同時視聴は最大1ストリームに厳格制限されます。別端末から同時再生を試みた場合は即座に HTTP 409 Conflict (CONCURRENT_STREAM_LIMIT_EXCEEDED) で遮断します。
PROOF 05 · .MJS STATIC AST SANDBOX.mjs プラグイン静的解析 & スコープ隔離実行
ユーザーが開発・申請する .mjs プラグインは実行および登録前に analyzeMjsPluginCode() で検査され、eval、Function、process.env、globalThis、WebSocket、動的 import()、node:* / cloudflare:* モジュールの使用をすべて拒否します。またプラグインに渡される ctx.env はホワイトリスト化された公開設定のみにスコープ制限されます。
PROOF 06 · SSRF & PRIVATE IP BLOCKINGSSRF(サーバーサイド・リクエスト・フォージェリ)完全防御
プラグイン専用の createIsolatedPluginFetch() は、すべての通信先URL(およびリダイレクト先URL)に対して isSafeExternalUrl() を強制適用し、127.0.0.1、localhost、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、クラウドメタデータIP(169.254.169.254)、[::1] へのアクセスを完全にブロックします。