URLパラメータ解析ツール

対応している入力形式
  • URL: 完全なURL (例: https://example.com?id=123)
  • Query String: クエリ文字列 (例: id=123&name=test)

よくある質問

基礎知識

URLクエリ文字列とは?

URLクエリ文字列は、URLの疑問符(?)以降の部分です。アンパサンド(&)で区切られたキーと値のペアを含み、Webサーバーにデータを渡すために使用されます。例えば、'https://example.com/search?q=hello&lang=ja'では、クエリ文字列は'q=hello&lang=ja'です。

URLの構成要素は?

URLは複数の部分で構成されています:プロトコル(https://)、ドメイン(example.com)、ポート(:8080)、パス(/page)、クエリ文字列(?key=value)、フラグメント(#section)。クエリ文字列はサーバーにパラメータを渡すために使用され、フラグメントはクライアント側のナビゲーションに使用されます。

GETとPOSTパラメータの違いは?

GETパラメータはURLクエリ文字列に表示され、ブックマーク可能で共有可能な非機密データリンクに適しています。POSTパラメータはリクエストボディで送信され、URLには表示されず、機密データや大きなペイロードに使用されます。GETにはURL長制限(約2048文字)がありますが、POSTには実質的な制限がありません。

セキュリティ

なぜURLパラメータをエンコードする必要があるのですか?

URLにはASCII文字のみ含めることができ、特定の文字(&、=、?、/など)は特別な意味を持つため、URLエンコードが必要です。スペース、日本語文字、特殊記号はパーセントエンコード(例:スペースは%20)してURLで安全に送信する必要があります。

URLパラメータのセキュリティ上の注意点は?

機密データ(パスワード、トークン)をURLパラメータに入れないでください。ブラウザ履歴、サーバーログ、Refererヘッダーに表示されるためです。インジェクション攻撃を防ぐため、サーバー側で常にパラメータを検証・サニタイズしてください。送信中にURL全体(パラメータを含む)を暗号化するためにHTTPSを使用してください。

高度なテクニック

JavaScriptでURLパラメータを解析する方法

JavaScriptでは、URLSearchParams APIを使用できます:

const url = new URL('https://example.com?name=John&age=30');
const params = url.searchParams;
console.log(params.get('name')); // 'John'
console.log(params.get('age'));  // '30'

// Or get all parameters
for (const [key, value] of params) {
  console.log(key, value);
}

同じパラメータの複数の値を処理する方法

URLは同じパラメータに複数の値を持つことができます(例:?color=red&color=blue)。URLSearchParams.getAll('color')を使用して、すべての値を配列として取得できます。一部のサーバーでは、配列パラメータに?color[]=red&color[]=blueのようなブラケット表記を使用します。

ハッシュフラグメントパラメータとは?

ハッシュフラグメント(#以降)は、通常、クライアント側のナビゲーションやシングルページアプリケーションに使用されます。一部のフレームワークはハッシュでパラメータを渡します(例:#/page?id=123)。クエリ文字列とは異なり、ハッシュフラグメントはサーバーに送信されず、ブラウザで完全に処理されます。

クエリパラメータのデバッグチェックリスト

重複したキー

?tag=js&tag=vue のような重複キーを受け付ける API もあれば、カンマ区切りやブラケット記法を求める API もあります。サーバーが最初の値、最後の値、または全値のどれを読むか確認してください。

ハッシュ内だけのパラメータ

# 以降の値はサーバーに送信されません。OAuth リダイレクト、解析、SPA ルートの値がバックエンドで見つからない場合、query string ではなく fragment に入っていないか確認してください。

トラッキングパラメータのノイズ

UTM、fbclid、gclid などのトラッキングパラメータは本来の業務パラメータを見えにくくします。API の挙動を調べる前に削除または分類してください。

機密値

token、メールアドレス、非公開 ID を query string に入れると、ログ、ブラウザ履歴、Referer に漏れる可能性があります。可能なら header や request body に移してください。