🌐 言語: 🇻🇳 Tiếng Việt · 🇬🇧 English · 🇯🇵 日本語(現在)
システムが守るもの — 組み込みの保護層とその限界
はじめに
このページでは、GP247 に組み込まれているセキュリティの仕組み(パッケージ gp247/core、gp247/front、gp247/shop、gp247/mcp)を一覧にします。
各仕組みについて、何をするかとその限界、つまりあなたが自分で補うべき部分の 2 点を示します。対象はサイトオーナー、
技術担当者、プラグイン開発者です。読み終えると、どの層がすでにあり、どの層を自分で用意すべきかがわかります。
ひと目でわかる
ブラウザからのリクエストは、データに届くまでに複数の層を通ります。図は、どの層が GP247 の担当で、どの層があなたのサーバーの担当かを示しています。
flowchart LR
U["ブラウザ<br/>アプリ、AI エージェント"] --> W["Web サーバー<br/>HTTPS 👤"]
W --> A["ログイン<br/>回数制限 ✅"]
A --> P["画面ごとの<br/>権限管理 ✅"]
P --> I["入力データの検査<br/>フォーム、ファイル ✅"]
I --> D["データベース<br/>秘密情報の暗号化 ✅"]
P --> L["操作ログ ✅"]
D --> K["バックアップ 👤"]
- ✅ = GP247 が対応済み、👤 = あなたが行う。 HTTPS とバックアップはアプリケーションの外側にあるため、GP247 が代わりに行うことはできません。
- GP247 が管理できる部分では初期状態で安全です:本番運用時はデバッグが自動で無効になり、MCP は初期状態でオフ、秘密情報は画面に再表示されません。
- 絶対に安全な層はありません:サーバーのすべての権限(データベースと
.envファイルの両方)を持つ人は、すべてを読むことができます。
このページの内容
- ログインとパスワード
- 権限
- 秘密情報と暗号化
- フォーム、入力データ、アップロードファイル
- お金、決済、Webhook
- REST API と MCP
- ログ
- 本番運用の設定と Docker
- インストールと更新
- GP247 が行わないこと
ログインとパスワード
この層は、パスワードの推測を防ぎ、データベースが漏れてもパスワードを安全に保ちます。
| 仕組み | GP247 が行うこと | 限界 — あなたが行うこと |
|---|---|---|
| ログイン失敗回数の制限 | 初期値はアカウント + IP アドレスごとに 1 分間 5 回、IP ごとに 1 分間 20 回(GP247_LOGIN_THROTTLE、GP247_LOGIN_IP_THROTTLE)。管理画面のログインページと API 経由の管理者ログインは同じカウンターを共有するため、経路を変えても回避できません |
非常に多くの IP からの攻撃は防げません。強いパスワード + 二要素認証を使ってください |
| パスワードのハッシュ化 | パスワードは bcrypt(一方向)で保存され、データベースを持つ人を含め、誰も元に戻せません | — |
| 管理者のパスワードポリシー | 「パスワードポリシー」画面で、最小文字数、大文字/小文字、数字、記号の必須を設定できます | 初期値は 6 文字だけです — 引き上げてください |
| ログインセッション | ログイン後に新しいセッション ID を発行。有効なアカウントだけがログインできます | SESSION_SECURE_COOKIE=true を設定したときだけ、Cookie は HTTPS 経由でのみ送信されます |
| 二要素認証 | 無料プラグイン MFA:管理者、顧客、出店者向けの TOTP コード。API v2 経由のログインにも適用 | プラグインのインストールと有効化が必要です。コアには含まれていません |
| CAPTCHA | プラグイン GoogleCaptcha を会員登録、パスワード再設定、決済、お問い合わせ、レビューに設置 | インストールし、ショップ設定でページごとに有効にする必要があります |
権限
この層は、各人が割り当てられた部分だけにアクセスし、操作できるようにします。
| 仕組み | GP247 が行うこと | 限界 — あなたが行うこと |
|---|---|---|
| アドレス + メソッドによる権限 | 各権限は、画面のアドレスと操作の種類(閲覧/操作)の一覧です。メニュー、画面へのアクセス、保存のすべてが同じ一覧で確認され、画面上の Livewire 操作も確認されます | 何を付与するかはあなたが決めます — 広く付与すれば、システムはそのとおりに動きます。GP247 の管理画面の権限管理を参照してください |
| 特別なロール | Administrator はすべての操作が可能。View.all はすべての画面を閲覧できますが編集はできません | Administrator を持つ人数を絞ってください |
| 複数ストア | ストア管理者は自分のストアのデータだけを閲覧します(複数ストアのプラグイン使用時) | 各アカウントに正しいストアを割り当ててください |
| API と MCP は管理画面より広い権限を持たない | API や AI エージェント経由の呼び出しも、そのアカウントと同じ権限チェックを通ります | トークンは作成者の権限を持ちます — その人が退職したら取り消してください |
秘密情報と暗号化
この層は、誰かがデータベースのコピーを入手しても、秘密情報(パスワード、サードパーティのキー)を読めないようにします。
| 仕組み | GP247 が行うこと | 限界 — あなたが行うこと |
|---|---|---|
| 設定の秘密情報の暗号化 | SMTP パスワード、CAPTCHA のシークレット、OAuth client secret、有料プラグインのライセンス、決済リンクのコードを、キー GP247_ENCRYPTION_KEY(未設定なら APP_KEY)でデータベース内に暗号化 |
キーを失う = 秘密情報を失う。.env をバックアップしてください。暗号化キーとバックアップを参照してください |
| 秘密情報を再表示しない | 設定画面の秘密情報の欄は上書きのみ可能で、以前の値は表示されず、ブラウザにも送られません | — |
| キーが違ってもサイトは落ちない | 復号できない秘密情報は空として扱われ、関連機能(メール送信、決済)は一時停止しますが、サイトは動き続けます。gp247:doctor の項目 secret_decryptable が壊れた行を示します |
エラーは表示されません — サーバー移行や .env 変更の後は gp247:doctor を実行してください |
| データを失わずにキーを変更 | コマンド php artisan gp247:encryption-key-rotate がすべての秘密情報を新しいキーで暗号化し直します |
GP247 の機密データの暗号化の手順どおりに行う必要があります |
⚠️ 注意: REST API の Webhook 署名シークレットは、専用キーではなく今も
APP_KEYで暗号化されています。APP_KEYを変更したら、各 Webhook のシークレットを再生成してください。
フォーム、入力データ、アップロードファイル
この層は、ほかのサイトがあなたの操作を偽装することや、入力データを通じた悪意あるコードの埋め込みを防ぎます。
| 仕組み | GP247 が行うこと | 限界 — あなたが行うこと |
|---|---|---|
| フォームの偽造防止(CSRF) | Web のすべてのフォームに偽造防止コードがあり、ほかのサイトがあなたの代わりに送信することはできません | — |
| 出力のエスケープ | 表示内容は初期状態で HTML エスケープされます。管理者が編集できる言語文字列は保存時に無害化されます | 自作のプラグイン/テンプレートもこのルールを守る必要があります |
| アップロードファイル | ファイルマネージャーはファイルの種類とサイズを検査し、php と html のファイルをブロックします。削除、名前変更、移動の操作は管理画面自身からのリクエストだけを受け付けます |
アップロードファイルは同じドメインで公開配信されます — ファイル管理の権限は信頼できる人だけに付与してください |
| ショップでの入力データ | 価格、属性価格、カートの数量はサーバーが再計算し、ブラウザから送られた数値を信用しません | — |
お金、決済、Webhook
この層は、入金の二重記録と、決済通知の偽装を防ぎます。
| 仕組み | GP247 が行うこと | 限界 — あなたが行うこと |
|---|---|---|
| 入金を一度だけ記録 | 注文と入金の記録には重複防止があり、2 回クリックしても注文は 2 件になりません | — |
| 決済リンク | リンクのコードは推測できず、安全に照合されます。決済ページと注文ページには送信回数の制限があります | — |
| 受信 Webhook | 配送 Webhook のアドレスには頻度制限があります | 決済/配送ゲートウェイのプラグインは、各社の署名を自分で検証する必要があります — 信頼できる提供元のプラグインを選んでください |
| 送信 Webhook | 受信側が検証できるよう HMAC 署名を付与。公開された HTTPS アドレスにだけ送り、内部ネットワークには送りません | 受信側は署名を検証する必要があります |
REST API と MCP
外部ソフトウェアのための 2 つの「入口」です。詳細は専用ページにあります。主な保護の要約です。
| 仕組み | GP247 が行うこと | 限界 — あなたが行うこと |
|---|---|---|
| スイッチ | GP247_API_MODE=0 で API のルートをすべて削除。「API設定」画面で部分ごとにオン/オフ。マスタースイッチをオフにすると MCP もオフ。MCP は新規インストール時にオフ |
使う部分だけを有効にしてください |
| トークン | ハッシュで保存、有効期限あり、ローテーション可能、取り消し可能 | アプリ/端末ごとにトークンを 1 つ。使わなくなったら取り消してください |
| MCP 経由の顧客情報 | 初期状態で顧客の個人情報をマスクします | 本当に必要な場合を除き、初期値のままにしてください |
関連情報:API によるログイン、トークン、顧客アカウント · MCP のセキュリティと権限。
ログ
この層で、誰がいつ何をしたかがわかります。
| 仕組み | GP247 が行うこと | 限界 — あなたが行うこと |
|---|---|---|
| 管理操作のログ | 管理者が画面を開く、保存する、Livewire 操作をする、管理 API を呼ぶ、MCP を呼ぶたびに記録します(GP247_ADMIN_LOG=1)。記録データ内のパスワード、シークレット、トークン、ライセンスはマスクされます |
ログイン失敗は記録しません。古い記録は自動では削除されません — 「アクセスログ」画面でときどき確認し、整理してください |
| アプリケーションのログファイル | エラーを storage/logs/gp247.log に記録。1 日 1 ファイル、14 日間保持(LOG_DAILY_DAYS) |
本番運用では適切な LOG_LEVEL を設定してください。storage/ フォルダを Web からアクセスできる状態にしないでください |
本番運用の設定と Docker
この層は、設定を誤った場合の被害を小さくします。
| 仕組み | GP247 が行うこと | 限界 — あなたが行うこと |
|---|---|---|
| デバッグの自動無効化 | APP_ENV=production のとき、APP_DEBUG の値にかかわらず GP247 がデバッグを強制的に無効にします |
APP_ENV が正確に production のときだけ適用されます |
| 環境ラベル | 管理画面のヘッダーに実行中の環境と赤い「DEBUG ON」ラベルを表示(GP247_ENV_BADGE) |
表示されたら対処してください |
| Docker 本番環境 | docker-compose.prod.yml はすべてのサービスで APP_ENV=production、APP_DEBUG=false を固定。.env.example のサンプルパスワードが残っていれば起動を拒否。使わない PHP 機能を無効化。nginx は隠しファイルと内部フォルダをブロック |
前段のプロキシで HTTPS を有効にしてください。イメージを定期的に更新してください |
インストールと更新
この層は、上書きインストールによるデータ消失と、更新パッケージのすり替えを防ぎます。
| 仕組み | GP247 が行うこと | 限界 — あなたが行うこと |
|---|---|---|
| インストール | コマンド gp247:install は確認を求め、データ消失を警告します。明確な確認がなければ、インストール済みのサイトへの上書きを拒否します |
インストール後、/install のページがログインページに切り替わったことを確認し、すぐに初期アカウントを変更してください |
| プラットフォームの更新 | php artisan gp247:update は更新だけを行い、データを壊すインストール手順を再実行することはありません |
更新前にバックアップしてください |
| プラグイン/テンプレートの更新 | パッケージは証明書を検証した接続でダウンロード(GP247_UPDATE_VERIFY_SSL)、ライブラリが提供する場合はハッシュを検査。上書きの前に旧版を storage/backups/extensions/ に保管 |
信頼できる提供元からだけインストールしてください |
GP247 が行わないこと
次の作業は GP247 に含まれていません — あなたが行わなければ、誰も行いません。
- HTTPS の有効化、HSTS/CSP ヘッダーの送信はしません — Web サーバーまたはプロキシで設定してください。
- データベース、
.env、アップロード画像のバックアップはしません — 暗号化キーとバックアップを参照してください。 - 初期の管理者アカウントの変更を強制しません — アカウントと権限を参照してください。
gp247:doctorでAPP_DEBUGや HTTPS は確認しません — 本番環境の設定に沿って自分で確認してください。- プラットフォームのセキュリティパッチを管理画面内で通知しません — リリースページを確認してください。
- PHP、Web サーバー、OS のパッチは当てません — それはあなた、またはホスティング事業者の作業です。
条件と制約(操作の前に確認)
- 保護は GP247 のコア部分に適用されます — サードパーティのプラグインやテンプレートは、これらのルールを無視する可能性があります。信頼できる提供元からだけインストールしてください。
- 一部の仕組みにはプラグインが必要です(二要素認証、CAPTCHA、プラグイン CheckIP による IP 制限)— インストールしなければ利用できません。
- 初期値は
.envで変更できます — ログイン制限の変更やログの無効化はあなたの判断です。このドキュメントは初期値を説明しています。
よくある質問(Q&A)
Q1: セキュリティ用のプラグインは必要ですか?
→ 管理者アカウント用に MFA(二要素認証)を、ショップでスパム登録が起きる場合は GoogleCaptcha をインストールすることをおすすめします。どちらも無料です。
Q2: ログには、ログインに失敗した人も記録されますか?
→ いいえ。ログはログイン済みの人の操作を記録します。ログイン失敗は回数が制限されるだけで、記録はされません。
Q3: データベースのコピーを手に入れた人は、SMTP パスワードを読めますか?
→ キーを含む .env ファイルを持っていなければ読めません。両方を持っていれば読めます — そのため、.env のバックアップはデータベースのバックアップとは別の場所に保管してください。
Q4: APP_ENV=production でデバッグは自動で無効になります。それでも APP_DEBUG は重要ですか?
→ はい。APP_ENV を打ち間違えると(例:prod、Production)、GP247 は強制的に無効にしません。確実にするため両方を設定してください:APP_ENV=production、APP_DEBUG=false。
Q5: GP247 は、管理画面への不審な IP からのアクセスをブロックしますか?
→ コアはログイン回数を制限するだけです。特定の IP だけを許可したい場合は、プラグイン CheckIP を使うか、Web サーバーで設定してください。
Q6: MCP で接続した AI エージェントは、私より多くのことができますか?
→ いいえ。エージェントはトークンを作成したアカウントとまったく同じ権限を持ち、それ以上にはなりません。MCP のセキュリティと権限を参照してください。
Q7: なぜドキュメントのどの行にも「限界」が書かれているのですか?
→ 「保護層があるから何もしなくてよい」と誤解しないためです。サイトが安全かどうかを決めるのは、「あなたが行うこと」の部分です。
📅 最終更新: 2026-11-04 · ✍️ 作成者 (Author): GP247