安全なストアを運営するために、エンジニアである必要はありません。ただ、攻撃の成否を決めている技術的な仕組みがいくつかあります。それらは、アプリのレビュー、セキュリティに関する質問票、Shopify 自身のお知らせなどで目にすることがあるでしょう。仕組みを理解しておくと、アプリのベンダーに、より的確な質問ができるようになります。
以下の各技術は、平易な言葉で説明しています。何をするのか、何を防ぐのか、そして、どこで防げなくなるのか。
- パスキーは、最も一般的な攻撃であるフィッシングから、パスワードそのものを取り除きます。
- サンドボックスがあるから、トラッキングピクセルや Shopify Functions はチェックアウトを読み取れないのです。
- SRI と CSP は改ざんされたファイルから守りますが、信頼されたベンダーが「設定」としてデータで配信するコードからは守れません。2026年10月の乗っ取りは、まさにこの方法で行われました。
- 単一の技術では十分ではありません。 本当の保護は、複数の層と、より少なく、より慎重に選んだアプリによって実現します。
概念イメージ:パスキー、サンドボックス、署名付きトークンが現代的なオンラインストアを守る様子。
トピックハブの一部Shopify セキュリティ特集ハブを見る →
1. パスキーとセキュリティキー(WebAuthn)
何をするか: パスワードの代わりに、デバイス(指紋、顔認証、PIN)または物理的なハードウェアキーでサインインします。秘密鍵がデバイスの外に出ることはありません。
何を防ぐか: フィッシングです。パスキーは、正規の Web サイトのアドレスに暗号学的に結び付けられているため、どれほどそっくりに見えても、偽の「Shopify ログイン」ページでは使えません。AI ツールが説得力の高いフィッシングメールを作れるようになった今、この点はさらに重要です。
どこで防げないか: 盗まれてロック解除されたままのノートパソコン、そして自分で共同編集者として招待してしまった攻撃者です。
Shopify での対応: スタッフの 2 段階認証と、Shop Pay の顧客で利用できます。
2. 署名付きの短命トークン(OAuth とトークン交換)
何をするか: アプリは、恒久的なパスワードに頼る代わりに、どの店舗のために動作しているかを証明する、Shopify が署名した暗号トークンを受け取ります。短命のトークンはすぐに期限切れになり、定期的に更新する必要があります。
何を防ぐか: リプレイされたり偽造されたりしたリクエスト、そしてトークンが漏えいした場合の長期的な被害です。
どこで防げないか: カスタムアプリや代理店のために作成した長命トークンです。これらは、今もマスターキーとして扱わなければなりません。
3. 最小権限のスコープ
何をするか: 各アプリは、読み取りや書き込みを許可される対象(商品、注文、顧客、テーマ)を明示的に宣言します。
何を防ぐか: アプリ(またはそれを支配する攻撃者)が、本来の役割を超えて手を伸ばすことです。メニューアプリが顧客の注文を読む理由はありませんし、レビューアプリがテーマを編集する理由もありません。
どこで防げないか: スコープは、バックエンドの API へのアクセスを制限するだけです。アプリ自身のスクリプトが、ページ読み込み後に買い物客のブラウザで何をするかは制限しません。
4. サンドボックス
何をするか: 残りのページやシステムにアクセスできない、隔離された環境でコードを実行します。
- Web ピクセル: アプリのピクセルは strict サンドボックス(ページにアクセスできない Web ワーカー)で動作します。カスタムピクセルは、トップページに到達できないサンドボックス化された iframe で動作します。
- Shopify Functions: 命令数、メモリ、入力に厳しい上限が設けられた WebAssembly モジュールです。ネットワークアクセスは、Enterprise プランのカスタムアプリを除き、できません。
何を防ぐか: トラッキングスクリプトによるクレジットカード欄の読み取りや、割引関数による外部サーバーへの呼び出しです。
どこで防げないか: 大半のアプリ埋め込みを含む通常のストアフロントのスクリプトは、サンドボックス化されていません。それらはページへのフルアクセス権限を持って動作します。
5. コンテンツセキュリティポリシー(CSP)
何をするか: ページがスクリプトを読み込んだり、接続したり、フレームに埋め込まれたりしてよいドメインを、ブラウザに伝える HTTP ヘッダーです。
何を防ぐか: 未知のドメインから読み込まれるスクリプトと、クリックジャッキング攻撃です(Shopify は、アプリに管理画面ページで frame-ancestors の設定を求めています)。
どこで防げないか: 多くのアプリを使うストアには広範な許可リストが必要であり、許可されたドメインから動作する悪意のあるコードは、依然として許可されてしまいます。CSP は、チェックアウトのような小さく厳密に管理されたページで最も効果を発揮します。
6. サブリソース完全性(SRI)
何をするか: スクリプトタグに暗号学的ハッシュ(指紋)を付けます。ファイルの内容が変わっていれば、ブラウザはそのファイルをブロックします。
何を防ぐか: CDN でホストされている、改ざんされたファイルです。
どこで防げないか: 正当な理由で頻繁に変わるファイルと、データとして届くコードです。2026年10月の乗っ取りでは、Shopify の CDN にあるアプリのファイルは正常でした。悪意のあるコードはベンダーの設定 API から届いたものです。SRI は役に立たなかったでしょう。MDN のドキュメントにも、これらの限界が記されています。
7. PCI DSS 4.0:決済ページのスクリプトに関するルール
これは何か: クレジットカード業界のセキュリティ基準です。「e スキミング」を対象とした、新しい 2 つの要件があります。
- 6.4.3: 決済ページ上のすべてのスクリプトの一覧を管理し、それぞれを正当化し、検証すること。
- 11.6.1: 決済ページとそのセキュリティヘッダーへの不正な変更を検出すること。
PCI Security Standards Council は、2025年にこれらのルールに関するガイダンスを公表しました。Shopify では、チェックアウトのページは Shopify が管理しています。これが、checkout.liquid とチェックアウトのスクリプトタグが廃止された主な理由の1つです。どの構成でも、この 2 つの要件を担当する先を明記した公式の Shopify のページは見つかりませんでした。コンプライアンスの証拠が必要な場合は、Shopify と決済プロバイダーに確認してください。
8. 3D Secure(3DS2)
何をするか: 買い物客の銀行が、通常はモバイルバンキングアプリの中で、支払いを確認します。
何を防ぐか: 盗まれたカード番号が悪用される多くのケースです。欧州経済領域のカード決済に適用されます。
どこで防げないか: Sansec が GorgonAgora ネットワークで文書化したように、犯罪者は偽のストアで 3DS の認証ステップを中継できます。買い物客は、本物だと思い込んで支払いを承認してしまいます。
9. ボットチャレンジ
何をするか: reCAPTCHA や hCaptcha などのテストです。実際の買い物客にとっては手早く、自動化されたボットにとっては手間がかかるように作られています。
何を防ぐか: 限定在庫の販売時の自動チェックアウト、カードテスト攻撃、そして一部の形式のスクレイピングです。
どこで防げないか: ボットのテストはチェックアウトの手間を増やします。さらに AI ショッピングエージェントが状況を複雑にしています。自動化された訪問者の中には、AI アシスタントを使う正当な顧客もいます。Shopify のエージェント向けドキュメントでは、署名付きリクエストと信頼レベルを使って両者を見分けています。
10. トレードオフと簡単なルール
| 技術 | 防ぐもの | 防げないもの |
|---|---|---|
| パスキー | スタッフのログインへのフィッシング | 招待してしまった悪意のある共同編集者 |
| 署名付きトークン | 偽造されたリクエストやリプレイ | 漏えいした長命トークン |
| スコープ | API を通じたアプリの行き過ぎ | ブラウザでのスクリプトの振る舞い |
| サンドボックス | ピクセルや Functions によるチェックアウトの読み取り | 通常のストアフロントのスクリプト |
| CSP | 未知のドメインからのスクリプト | 許可されたドメインからの悪質なコード |
| SRI | 改ざんされた静的ファイル | 設定データとして届くコード |
| 3DS | 単純な盗難カードの利用 | 偽ストアでの中継された承認 |
簡単なルールは次のとおりです。インストールするアプリはどれも、あなたが管理できないコードを増やします。 スコープが狭く、チェックアウトにアクセスせず、ストアフロントで何が動作するかを明確に説明しているアプリを選んでください。
11. どのアプリのベンダーにも聞くべき質問
- どのスコープを要求し、その理由は何ですか?
- あなたのアプリは、私のストアフロントやチェックアウトでコードを実行しますか? そのコードはどこから読み込まれますか?
- アプリの設定項目に JavaScript や HTML を含めることはできますか? 誰がそれを編集できますか?
- 自社の管理画面と内部ツールは、どのように保護していますか?(2段階認証、アクセスログなど)
- アンインストールしたとき、私のデータとストアフロントはどうなりますか?
Navi+ がこれらの質問にどう答えているかをご覧いただくか、Shopify が既にあなたのために行っていることをお読みください。
出典
- Shopify Help, Two-step authentication:https://help.shopify.com/en/manual/your-account/account-security/two-step-authentication
- Shopify.dev, Token exchange:https://shopify.dev/docs/apps/build/authentication-authorization/access-tokens/token-exchange
- Shopify.dev, Web pixels:https://shopify.dev/docs/apps/build/marketing-analytics/pixels
- Shopify.dev, Shopify Functions:https://shopify.dev/docs/api/functions
- Shopify.dev, Set up iframe protection:https://shopify.dev/docs/apps/build/security/set-up-iframe-protection
- MDN, Subresource Integrity:https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity
- PCI Security Standards Council, Payment Page Security and Preventing E-Skimming:https://blog.pcisecuritystandards.org/new-information-supplement-payment-page-security-and-preventing-e-skimming
- Sansec, GorgonAgora:https://sansec.io/research/gorgonagora-fake-storefront-skimming-network
- cside, HulkApps Shopify checkout hijack:https://cside.com/blog/hulkapps-shopify-checkout-hijack
- Shopify.dev, Agents:https://shopify.dev/docs/agents