2026年10月のアプリ乗っ取りの後、商家はスタックにあるすべてのアプリについて、厳しい問いを投げかけるようになりました。このベンダーが攻撃されたら、私の顧客に何が届きうるのか?
それは正しい問いです。ここでは、Navi+ についての率直な答えを示します。アプリが実際にどのように構築され、設定されているかに基づいており、どのアプリも取り除けない限界も含めています。
- 読み取り専用の権限。 Navi+ が Shopify に求めるのは、テーマ、商品、オンラインストアのナビゲーション、コンテンツの 4 つの読み取りスコープだけです。注文や顧客にはアクセスせず、テーマへの書き込み権限もありません。
- チェックアウトへのアクセスなし。 Navi+ にはチェックアウト拡張機能もウェブピクセルもありません。チェックアウトのページで動作することは決してありません。
- テーマの編集なし。 ストアフロントのメニューは、テーマファイルを編集することも ScriptTag を使うことも無く、Shopify のアプリ埋め込みブロックを通じて読み込まれます。
- 買い物客が当社のサーバーに接続することはありません。 メニューは CDN 上の静的ファイルとして公開されます。
概念イメージ:ストアを読み取るものの、チェックアウトや顧客データには決して到達しないナビゲーションレイヤー。
図:Navi+ が到達できるもの(緑)と、決して触れないもの(灰色)。
トピックハブの一部Shopify セキュリティ特集ハブを見る →
1. 権限:メニューに必要なものだけ
ナビゲーションアプリは、テーマのレイアウト、商品、メニュー、ページを把握する必要があります。Navi+ が Shopify に求めるのは、それだけです。
read_themesread_productsread_online_store_navigationread_content
write_themes、write_script_tags、注文や顧客に関するスコープはありません。たとえ攻撃者が、アプリの Shopify へのアクセスを乗っ取ったとしても、その権限ではテーマファイルを編集したり、注文履歴を読んだりすることはできません。
2. インストールと管理画面のセッション:Shopify が署名
Navi+ の認証は、Shopify が管理するインストールとトークン交換を通じて行われます。Shopify 管理画面の中で Navi+ を開くと、Shopify が署名付きの ID トークンを提供します。Navi+ は、それをアクセストークンと交換する前に、4 つの条件を検証します。
- 暗号署名が有効であること。
- トークンが Navi+ 向けに発行されたこと。
- あなたの特定の
myshopify.comストアに属していること。 - 期限切れではないこと。
得られるアクセストークンは期限付きのオフライントークンであり、恒久的な鍵ではありません。
クリックジャッキングを防ぐため、Navi+ の管理画面ページは、ブラウザに対して、あなたのストアの管理画面と Shopify の管理ドメイン内でのみ表示するよう指示しています。
Shopify が Navi+ にバックグラウンドのイベント(アンインストールの Webhook など)を送るたびに、アプリは Shopify の署名を確認し、一致しないペイロードはすべて拒否します。
3. ストアフロント:テーマの手術ではなく、アプリ埋め込み
ストアフロントでは、Navi+ は完全にテーマアプリ拡張機能(アプリ埋め込みブロック)として動作します。Shopify のテーマエディターで、簡単なスイッチをオンまたはオフにできます。Navi+ はテーマファイルに一切書き込まないため、当社のコードがテーマの更新をブロックすることはなく、アンインストールしても theme.liquid に残るコードを削除する必要はありません。
4. 静的なメニューファイル:買い物客からのライブ通信はなし
メニューを公開すると、Navi+ はそれを CDN 上の静的ファイルにコンパイルします。ストアフロントのスクリプトは非同期に読み込まれ、そのファイルを読み取ります。買い物客のブラウザが、Navi+ のアプリケーションサーバーやデータベースを呼び出すことはありません。 これによって、次の 2 つの明確な利点が生まれます。
- 性能と耐障害性。 当社のアプリケーションサーバーが遅くなったり停止したりしても、公開済みのメニューは動き続けます。
- 障害の封じ込め。 ストアフロントのスクリプトは安全にラップされています。失敗した場合はメニューが表示されず、エラーがログに記録されますが、ストア、カート、チェックアウトは動き続けます。メインの CDN が失敗した場合は、バックアップの CDN が試行されます。
5. 買い物客のデータ:ブラウザ内に留まる
Navi+ はチェックアウトに触れず、カートバッジのためにカート内の商品数だけを読み取ります。顧客がログインすると、メニューは顧客タグや B2B の会社情報を確認し、卸売リンクなどの特定の項目を表示または非表示にできます。その確認は買い物客のブラウザの中で行われます。これらの情報を Navi+ に送信する経路は確認されていません。
プライバシー審査のための、運用上の 2 点の詳細です。
- Navi+ には、任意のストアフロント利用分析(Google Analytics)が含まれており、商家はオフにできます。
- 小規模な性能サンプル(Shopify のページビューの約 5%)が、ハッシュ化されたストア名とともに読み込み時間を記録します。IP アドレス、ユーザーエージェント、ページ URL は保存しません。
6. 正直な限界
「ハッキング不可能」だと約束できるアプリベンダーは存在しません。Navi+ について、慎重な商家に知っておいてほしいことは次のとおりです。
- メニューには独自の HTML を含められます。 Navi+ では、商家がメニューにカスタム HTML ブロックやリンクを追加できます。この柔軟性は強力ですが、Navi+ のメニューを編集できる人は誰でも、ストアフロントに表示される内容を変えられるということでもあります。それに応じて、Shopify のスタッフ権限を制限してください。
- メニューファイルはベンダーが配信します。 10月のインシデントのアプリと同じく、Navi+ は設定を自社のインフラから配信します。当社の保護は、読み取り専用のスコープ、チェックアウトへのアクセスがないこと、そして設定コードを実行するのではなく静的ファイルを公開することです。これらはリスクを狭めますが、ゼロにはしません。
- 改善を続けています。 アプリのセキュリティ対策は継続中であり、変更があればこのページを更新します。
7. どんなメニューアプリでも、自分で確認する方法(Navi+ を含む)
- 設定 → アプリと販売チャネル を開き、アプリを選んで、そのアクセス一覧を読んでください。
- テーマエディターの App embeds(アプリ埋め込み) を見て、どのアプリがストアフロントで動作しているかを確認してください。
- ストアをプライベートウィンドウで開き、ブラウザの開発者ツールを開いて、どのドメインがスクリプトを読み込んでいるかを確認してください。
- チェックアウトやカートにつながるメニューのリンクをすべてクリックし、自分のドメインに留まっていることを確認してください。
- もう使っていないメニューアプリは削除してください。埋め込みをオフにすれば、そのコードはすぐに停止します。
全体像については、2026年に Shopify 商家が直面する脅威、Shopify がストアを守るために既に行っていること、理解しておく価値のあるセキュリティ技術をお読みください。
出典
- Navi+ のアプリ設定(スコープ、アプリ埋め込み、ストアフロントのローダー)、2026年11月4日に確認。
- Shopify.dev, Token exchange:https://shopify.dev/docs/apps/build/authentication-authorization/access-tokens/token-exchange
- Shopify.dev, Set up iframe protection:https://shopify.dev/docs/apps/build/security/set-up-iframe-protection
- Shopify.dev, Privacy law compliance (webhooks):https://shopify.dev/docs/apps/build/privacy-law-compliance
- Roman Zipp, Shopify shops hit with ongoing Checkout Hijack attack:https://romanzipp.com/blog/shopify-hit-with-phishing-attack