// SECURITY
セキュリティ対策
最終更新日:2026年5月23日
Endebut Catch は、利用者の個人情報とプライバシーを最優先に設計しています。 以下は当サービスが実装している技術的セキュリティ対策の一覧です。
🔐
1. プライバシー by Design
構造的にリスクを抑える設計
応募者と主催者の連絡先情報の取扱いを以下のように設計し、情報漏洩リスクを構造的に低減しています。
- 応募者のプロフィール連絡先フィールドを持たせない: 応募者プロフィールには電話・LINE・別メール等の連絡先フィールドが表示されず、登録できません。 アプリケーション層で role 判定により強制的に null 化されるため、データベースにも保存されません。
- サインイン用メールアドレスのみ Supabase Auth に保管: ログイン認証に必要な認証用メールアドレスは Supabase Auth で暗号化保管されますが、 他ユーザー(主催者を含む)には一切開示されません。
- サイト内チャット機能で連絡可能: 主催者との連絡はサイト内チャットで行うため、応募者は個人連絡先を晒すことなくやり取りできます。 面談時に当事者間で直接連絡先を交換し、以降は直接連絡が可能になります(後述「7. サイト内チャット機能」参照)。
- 未成年応募者の保護者連絡先: 18歳未満の応募者については保護者の連絡先(氏名・続柄・連絡先)を登録必須としており、 当社データベースに非公開で保管します。 他のユーザー(主催者を含む)には開示されず、運営のみが緊急時に確認します。
🔒
2. 通信・転送のセキュリティ
ネットワーク層の保護
- HTTPS / TLS 1.3 強制: 全通信を業界標準の暗号化通信で保護
- HSTS (Strict-Transport-Security): max-age=63072000 / includeSubDomains / preload 対応
- upgrade-insecure-requests: CSP により全リソースを HTTPS にアップグレード
🛡️
3. 認証・認可
ユーザー境界の強制
- PostgreSQL 行レベルセキュリティ (RLS): データベース層でユーザーごとのアクセス境界を強制。アプリケーション層をバイパスされても保護される
- パスワードのハッシュ保管: Supabase Auth により bcrypt 系で保管。ハッシュ化前の値は保持しません
- パスワード強度の強制: 10文字以上 + 大文字 / 小文字 / 数字 / 記号 のうち3カテゴリ以上を必須化。よくある弱パスワードはブロック
- セッション管理: HttpOnly / Secure / SameSite クッキーで管理
🚧
4. ウェブ攻撃対策
XSS / CSRF / クリックジャッキング
- Content-Security-Policy (CSP): nonce ベースで動的に生成。
default-src 'self'をベースに、 許可ドメインを最小限に絞ったホワイトリスト方式 - X-Frame-Options: DENY: iframe 埋め込みを全面禁止(クリックジャッキング対策)
- X-Content-Type-Options: nosniff: MIME sniffing を禁止
- Referrer-Policy: strict-origin-when-cross-origin: 他サイトへのリファラ情報漏洩を抑制
- Permissions-Policy: camera / microphone / geolocation / payment / usb 等を全面無効化
- React / Next.js のデフォルト XSS 対策: JSX の自動エスケープ、メールテンプレートは独自 escapeHtml で保護
🚦
5. レート制限・スパム対策
不正大量送信のブロック
- API レート制限:
/api/contact等で IP 単位の送信回数制限(10分間に5回まで) - フィールド長制限: 本文最大 5000 文字、件名 200 文字等で DoS / 巨大ペイロード攻撃を防止
- メアド形式検証: RFC 準拠の正規表現で不正形式をブロック
📁
6. ファイルアップロードの安全性
拡張子偽装・容量攻撃の対策
- マジックバイト検証: ファイル先頭バイトでMIMEタイプを判定し、拡張子偽装をブロック
- サイズ制限: 画像 10MB / 動画・音声 100MB
- 再生時間制限: 動画・音声は5分以内
- Supabase Storage RLS: アップロード先フォルダを
{user_id}/に強制
📋
7. 監査ログ・不正検知
重要操作の追跡
- セキュリティイベントログ: スカウト送信・承諾・辞退、メッセージ送信等を記録
- IP ハッシュ化: ブルートフォース検知用にIPはSHA-256ハッシュで保管(個人特定不可)
- 管理者操作の監査: ユーザー停止・解除・通報対応等の管理者操作を
audit_logsに記録 - RLS で閲覧制限: ログは管理者のみ閲覧可
🔑
8. シークレット管理
API キー・機密値の保護
- サーバー専用環境変数:
SUPABASE_SERVICE_ROLE_KEY/RESEND_API_KEY等はクライアントへ露出しません - クライアント露出キーの最小化: フロントエンドが利用するのは Supabase Anonymous Key のみ(RLS で保護)
- .env ファイルの除外: .gitignore により認証情報を含むファイルはコミットされません
🏗️
9. インフラ・運用
クラウド基盤と更新ポリシー
- ホスティング: Vercel(SOC 2 Type 2 / ISO 27001 認証取得済み)
- データベース: Supabase / PostgreSQL(自動バックアップ・暗号化保存)
- 依存ライブラリの監視: GitHub Dependabot による脆弱性アラート
- 定期的なセキュリティアップデート: Next.js / Supabase SDK 等を最新の安定版に追随
🚨
10. インシデント対応
万一の場合の連絡先
セキュリティ上の脆弱性を発見された場合は、公開せず以下までご連絡ください。 責任ある開示にご協力いただいた方には、可能な範囲で謝意を表します。
本ページに記載の対策は、現時点での実装内容に基づきます。 サービスのアップデートにより内容は変更される場合があります。
関連: プライバシーポリシー / 利用規約