セキュリティと運用

AppCotton は「ライセンス管理」「決済」「ドメイン認証」など、ビジネスに直結する重要な情報を扱います。
そのため、不正利用の防止・情報の保全・運用トラブルの回避が設計段階から重要になります。

この章では、AppCottonを安全に運用するための 役割別のセキュリティ指針具体的な設定ポイント を整理します。


1. 基本となる考え方

AppCottonにおける「資産」

  • ライセンスキー(特に有料プラン)
  • アクティベーションされているドメイン情報
  • Stripe 決済履歴・請求ログ(Webhook 連携含む)
  • ユーザーアカウント / Eメール

セキュリティの目的

対象防ぎたいこと
ライセンスキー無断共有 / 公開 / 横流し
アクティベーション過剰利用 / 不正複製 / 自動化による濫用
決済データ不正決済 / 成りすまし購入 / 誤請求
ユーザー情報アカウント乗っ取り / 個人情報の漏洩

2. ライセンスキーのセキュリティ

保存形式

  • ライセンスキーは 平文で保存しません
  • 生成時に 一方向ハッシュ化(例:SHA-256 + salt)。

検証方式

  • 「入力キー == DBキー」 ではなく
    入力をハッシュ化 → DBのハッシュと比較

ライセンス検証API

  • HTTPS 必須
  • GET ではなく POST を使用(キーがURLに残らない)
  • レスポンスは最小限(例:valid: true/falseactivation_limitreason

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リペア月1AppCotton > 設定 > DB修復

8. セキュリティと運用の基本原則(まとめ)

  • ライセンスキーはハッシュ保存
  • ドメインは正規化 → 上限管理
  • Webhook 完了時にのみライセンス変更
  • UIで自己解除可能にしてサポート負担を減らす
  • 不正アクセスはログとレート制限で抑止
  • 役割と権限を明確に分離
セキュリティ = 防御だけではなく「事故を起きにくくする運用設計」

AppCotton は、販売者にもユーザーにも ストレスの少ないライセンス体験を提供することを最優先にしています。