1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Webアプリケーションにおけるパラメータの種類と違いをまとめてみた

Posted at

パスパラメータ

  • 一意なリソースを識別するための情報を入れる

comment_idがパスパラメータに該当する(Qiita API v2より抜粋)

GET /api/v2/comments/:comment_id

クエリパラメータ

https://example.com/list?query_parameter=1&query_parameter=2
  • ? 以降がクエリパラメータ
  • ? + 変数名 = 変数の値 という形式
  • パラメータが複数ある場合は & でつなぐ
  • 特定のリソースを操作して取得する際に必要な情報は、クエリパラメータに入れる
    • 検索系に使用する
    • GETのみで使用できる(POSTでは使用できない)
  • クエリパラメータは、以下に記録されていることが多い
    • Webサーバのアクセスログ
    • ファイヤーウォールログ
    • プロキシサーバのキャッシュやログ
    • ブラウザのキャッシュや履歴

クエリパラメータの用途

  • ユーザーが入力したパラメータの送信(検索条件など)
  • Webページ間のパラメータの受け渡し
  • Webアプリケーションへのパラメータ付きリンク

見られて困る情報はクエリパラメータを使わない

  • 見られて困る情報例
    • パスワード
    • Webメールのメール内容などの個人用データ
    • 名前,年齢,住所などの個人情報
    • Webアプリケーション内部のデータ構造
    • Webサーバ内部のフルパスなどの各種システム情報
  • 見られて困る情報と困らない情報を分類するべき
    • Webアプリケーション設計時に注意する

リクエストボディ

  • 追加、更新する際の内容を入れる
    • POSTとPUT
  • idやパスワードなど、漏洩したら困る情報を付与する
  • リクエストボディはログなどには記録されないため、GETよりPOSTのほうが安全
実行するAPI.
https://example.com/members/
リクエストボディ.
{
  name:"yamada taro",
  age:20
}

リクエストボディの用途

  • 見られて困る情報を隠すため、クエリパラメータではなくリクエストボディを使う
    • ユーザーID、パスワードなど

SQLインジェクションとは?

  • SQLの呼び出し方に不備がある場合に発生する脆弱性
  • 非常に影響の大きな脆弱性なので、絶対に混入しないようにすることが求められる

どういう影響を受けるか

  • DBの全ての情報が外部から盗まれる
  • DBの内容が書き換えられる
  • 認証を回避される
    • IDとパスワードを用いずにログインされる
  • DBサーバ上のファイルの読み出し、書き込み、プロウラムの実行などが行われる

対策

  • エスケープ処理を実施する
    • プログラムで使う特殊の記号を普通の文字をとして扱う
    • \(円記号)をつけることで、特殊文字を「普通の文字」として認識できる
      • 例) "(ダブルクォーテーション) → "

参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?