AppCotton は「ライセンス管理」「決済」「ドメイン認証」など、ビジネスに直結する重要な情報を扱います。
そのため、不正利用の防止・情報の保全・運用トラブルの回避が設計段階から重要になります。
この章では、AppCottonを安全に運用するための 役割別のセキュリティ指針 と 具体的な設定ポイント を整理します。
1. 基本となる考え方
AppCottonにおける「資産」
- ライセンスキー(特に有料プラン)
- アクティベーションされているドメイン情報
- Stripe 決済履歴・請求ログ(Webhook 連携含む)
- ユーザーアカウント / Eメール
セキュリティの目的
| 対象 | 防ぎたいこと |
|---|---|
| ライセンスキー | 無断共有 / 公開 / 横流し |
| アクティベーション | 過剰利用 / 不正複製 / 自動化による濫用 |
| 決済データ | 不正決済 / 成りすまし購入 / 誤請求 |
| ユーザー情報 | アカウント乗っ取り / 個人情報の漏洩 |
2. ライセンスキーのセキュリティ
保存形式
- ライセンスキーは 平文で保存しません。
- 生成時に 一方向ハッシュ化(例:SHA-256 + salt)。
検証方式
- 「入力キー == DBキー」 ではなく
入力をハッシュ化 → DBのハッシュと比較。
ライセンス検証API
- HTTPS 必須
- GET ではなく POST を使用(キーがURLに残らない)
- レスポンスは最小限(例:
valid: true/false、activation_limit、reason)
3. ドメイン認証(アクティベーション)
ドメインの正規化(必須)
例:
https://www.example.com → example.com
https://sub.example.com → sub.example.com
制限
| 項目 | 推奨値 |
|---|---|
| アクティベーション上限 | プランの activation_limit |
| 無制限 (-1) の扱い | イベントログ・不正監視は継続する |
解除・再認証フロー
- ユーザー自身が自己解除できる UI があるため、サポートコストが低減
- ただし 24時間以内の解除回数制限 を推奨(不正共有防止)
4. Webhook のセキュリティ(Stripe)
| 項目 | 必須対応 |
|---|---|
| シークレット検証 | Stripe-Signature を必ず検証 |
| 冪等化(重複受信対策) | event.id を記録して2回処理しない |
| タイムスタンプ検証 | 署名 timestamp が古い場合は拒否 |
Webhook 成功後に ライセンス変更を確定することで
決済 → 反映の順が 一貫して安全になります。
5. 運用上の不正利用対策
推奨設定(有効化すると安全性が大きく上がる)
- メールアドレス認証
- reCAPTCHA(無料プラン / ライセンス請求フォーム)
- IP レートリミット
- 同一ユーザーの無料ライセンスは1件のみ
- 「アクティベーション履歴」監査が見えるUI
監査ログ(AppCottonの強力な資産)
以下の情報を特に記録します:
| 項目 | 用途 |
|---|---|
| IP | 不正アクセスの判定 |
| user_agent | 自動化検知 |
| domain | 不正共有/複製の検知 |
| first/last_access | 残存リスク/利用パターン分析 |
| deactivated_at | 解除操作の監査証跡 |
6. 権限とロール
| ロール | 権限 | 用途 |
|---|---|---|
| 管理者 (administrator) | すべての管理操作 | システムオーナー |
| サポート担当 (custom role) | ライセンス確認 / ドメイン解除 | 運用ヘルプ用 |
| ユーザー (subscriber) | マイライセンス閲覧 / ドメイン解除 | エンドユーザー |
原則:編集権限は極力絞ること。
7. 定期的な運用点検
| 項目 | 推奨頻度 | 内容 |
|---|---|---|
| Webhook 到達状況 | 毎週 | Stripe Dashboard → Webhook Logs |
| 不正アクセス/大量アクティベーション | 毎週 | Activation Log の異常値確認 |
| ライセンス失効予定の確認 | 毎週 | expires_at の近いユーザーに通知 |
| DBリペア | 月1 | AppCotton > 設定 > DB修復 |
8. セキュリティと運用の基本原則(まとめ)
- ライセンスキーはハッシュ保存
- ドメインは正規化 → 上限管理
- Webhook 完了時にのみライセンス変更
- UIで自己解除可能にしてサポート負担を減らす
- 不正アクセスはログとレート制限で抑止
- 役割と権限を明確に分離
セキュリティ = 防御だけではなく「事故を起きにくくする運用設計」
AppCotton は、販売者にもユーザーにも ストレスの少ないライセンス体験を提供することを最優先にしています。