---
title: "URLクエリのトークンを防ぐAIプロンプトと公開前スキャン"
description: "AIでHTML生成する際にURLクエリへのトークン混入を防ぎたい担当者向け。プロンプト制約の書き方とgrepを使った公開前スキャンの具体的な手順を解説します。"
image: "https://giga-site.com/og-image.png"
canonical: "https://giga-site.com/articles/query-token-prompt-scan"
markdown: "https://giga-site.com/articles/query-token-prompt-scan/index.md"
category: "セキュリティ"
publishedAt: "2026-06-25"
updatedAt: "2026-06-25"
readingMinutes: 4
---
# URLクエリのトークンを防ぐAIプロンプトと公開前スキャン

AIプロンプトの段階でURLクエリへのトークン埋め込みを禁止し、生成後にスキャンで確認する二段構えのワークフローを紹介します。どちらか片方では取りこぼしが起きやすいため、両方を習慣化することが重要です。

> Source HTML: https://giga-site.com/articles/query-token-prompt-scan
> Article index: https://giga-site.com/articles/index.md

## なぜ危ないのか

AIはURLに認証情報を渡すパターンをトレーニングデータから学習しており、指示がなければ自然にクエリトークンを使うコードを生成します。特に「外部APIと連携するHTMLを作って」という指示では、APIキーをクエリに含めたfetchコードが出力されやすいです。

スキャンなしで公開した場合、問題が発覚するのはアクセスログを解析したとき・APIの不正使用アラートが来たとき・セキュリティ監査のときになりがちです。いずれも発覚が遅れると被害が拡大しているため、生成直後のスキャンを習慣化する価値があります。

- 相手がログインなしで開ける状態か確認する
- PCとスマホで最低1回ずつ表示を確認する
- 内部情報・個人情報・不要な外部送信が残っていないか見る
- レビュー期限と修正時の差し替え方を決めておく

## ソースで見る場所

生成されたHTMLのJavaScriptブロックで、`location.search`・`URLSearchParams`・`location.href.split('?')`のいずれかが使われている行を特定します。そこから取得した値が`fetch`・`axios`・`XMLHttpRequest`のURL引数に渡されているパスをたどります。

HTMLファイルが複数ある場合はディレクトリ全体に対して`grep -r 'location\.search\|URLSearchParams\|query.*token' ./dist/`を実行します。ヒットしたファイルと行番号をリスト化し、それぞれの用途を確認してから「問題なし」と判定してください。

- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する

## 安全に共有する設定

スキャンで問題がなかったHTMLをギガサイト便にアップロードする際、URLにクエリパラメータを付けずに済む設計かを最終確認します。ギガサイト便は独自のアクセス制御を持っているため、コンテンツ側の認証ロジックを簡略化できます。

レビュアーへの案内メールにはギガサイト便の認証URL（クエリなし）のみを記載し、トークンを別途伝えない運用にします。パスワードは別チャンネル（電話・チャットツール）で伝えることで、メール本文にURLとパスワードが同居する状態を避けられます。

- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する

## 再発防止ルール

プロンプトの先頭に「セキュリティ制約」セクションを設け、「URLクエリに認証情報・APIキー・ユーザーIDを含めないこと。認証が必要な場合はAuthorizationヘッダーを使うこと」と明記します。このセクションをプロンプトテンプレートとして保存し、毎回コピー&ペーストして使う運用にします。

生成ごとにスキャンスクリプト（`npm run security-check`）を実行する習慣をつけます。package.jsonのscriptsに`grep -rn 'location.search' src/`を登録しておくと、コマンド一発で確認できます。スキャンが通過しなければアップロードしないというルールを自分に課すことで、見落としを構造的に防げます。

- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する

## よくある質問

### プロンプトでクエリトークンを禁止したのに、AIがクエリを使うコードを出力しました。どうすればよいですか？

制約違反の箇所を指摘して再生成を依頼するか、該当箇所をヘッダー認証に手動で書き換えてください。AIが制約を守らない場合は制約の言い回しを変えて再試行するか、別モデルを試すことを検討してください。

### grepで検索してもヒットしなかったのに、動作中にURLにトークンが付いていました。なぜですか？

JavaScriptが動的にURLを生成している場合、静的検索では捕捉できないことがあります。DevToolsのNetworkタブで実際のリクエストURLを確認する動的スキャンを組み合わせてください。

### URLSearchParamsを使っているコードが全部危険というわけではないですか？

クエリを読み取るだけで外部送信しない使い方（ページ表示切り替えなど）は問題ありません。危険なのはクエリから取得した値をAPIのURLに付けて送信するケースです。読み取りか送信かを確認してください。

## 関連記事

- [AI生成HTMLにURLクエリのトークンが残っていないか確認する方法](https://giga-site.com/articles/query-token-check/index.md)
- [URLクエリのトークンを含むHTMLを共有するときのリスクと対策](https://giga-site.com/articles/query-token-risk-countermeasure/index.md)
- [社外レビュー前にURLクエリのトークンを検出するチェックリスト](https://giga-site.com/articles/query-token-external-review-checklist/index.md)
- [APIキー直書きを防ぐAIプロンプトと公開前スキャン](https://giga-site.com/articles/hardcoded-api-key-prompt-scan/index.md)
- [外部フォーム送信先を防ぐAIプロンプトと公開前スキャン](https://giga-site.com/articles/external-form-action-prompt-scan/index.md)
- [フィッシングに見える文言を防ぐAIプロンプトと公開前スキャン](https://giga-site.com/articles/phishy-copy-prompt-scan/index.md)

```json
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "URLクエリのトークンを防ぐAIプロンプトと公開前スキャン",
  "description": "AIでHTML生成する際にURLクエリへのトークン混入を防ぎたい担当者向け。プロンプト制約の書き方とgrepを使った公開前スキャンの具体的な手順を解説します。",
  "datePublished": "2026-06-25",
  "dateModified": "2026-06-25",
  "mainEntityOfPage": "https://giga-site.com/articles/query-token-prompt-scan",
  "url": "https://giga-site.com/articles/query-token-prompt-scan",
  "inLanguage": "ja",
  "image": "https://giga-site.com/og-image.png",
  "articleSection": "セキュリティ",
  "author": {
    "@type": "Organization",
    "name": "ギガサイト便"
  },
  "publisher": {
    "@type": "Organization",
    "name": "ギガサイト便"
  },
  "mainEntity": [
    {
      "@type": "Question",
      "name": "プロンプトでクエリトークンを禁止したのに、AIがクエリを使うコードを出力しました。どうすればよいですか？",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "制約違反の箇所を指摘して再生成を依頼するか、該当箇所をヘッダー認証に手動で書き換えてください。AIが制約を守らない場合は制約の言い回しを変えて再試行するか、別モデルを試すことを検討してください。"
      }
    },
    {
      "@type": "Question",
      "name": "grepで検索してもヒットしなかったのに、動作中にURLにトークンが付いていました。なぜですか？",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "JavaScriptが動的にURLを生成している場合、静的検索では捕捉できないことがあります。DevToolsのNetworkタブで実際のリクエストURLを確認する動的スキャンを組み合わせてください。"
      }
    },
    {
      "@type": "Question",
      "name": "URLSearchParamsを使っているコードが全部危険というわけではないですか？",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "クエリを読み取るだけで外部送信しない使い方（ページ表示切り替えなど）は問題ありません。危険なのはクエリから取得した値をAPIのURLに付けて送信するケースです。読み取りか送信かを確認してください。"
      }
    }
  ]
}
```
