プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • セキュリティ
  • 【Web開発】画面間の情報の受け渡し方法について(hiddenパラメータ、セッション変数、…
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Web開発】画面間の情報の受け渡し方法について(hiddenパラメータ、セッション変数、クッキー)

03.31

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

HTTPプロトコルでは、状態を保持しないストートレスな通信ですので、情報連携する際は、様々な方法が用意されています。

formのhiddenパラメータを使う。

formのhiddenパラメータを使って情報を別画面に受け渡すことができます。

メリット

  • セッション管理をする必要がないのでモードレスの子画面の実装と相性が良い
  • 第三者に対しては堅牢です。

デメリット

  • 「フォームのHTML」や「データ通信量」が肥大化する。
  • 利用者自身では、プロキシツールを使うことで簡単に内容を改ざんできてしまいますので、ログイン認証の際の利用には向きません。(使う場合は暗号化も検討する。)

用途

  • モードレスの子画面を実装する場合
  • 利用者自身によっても、書き換えられたら困るようなログイン認証や金銭が関わるような処理以外では、ほぼ第一候補となりえます。

セッション変数を使う。

メリット

クッキーよりも、実装は簡単。

デメリット

  • セッションごとにサーバーのメモリを使うことになるので利用者数によってメモリが足りなくなる。
  • セッションIDの固定化攻撃に弱い。

用途

ログイン認証の際の受け渡しに使う。

クッキーを使う。(セッション管理とあわせて使われる。)

「名前=変数」という情報の組み合わせをブラウザで保持するもの。一度これを覚えたブラウザは再度そのサイトにアクセスした場合は、覚えたクッキー値を再度送信します。

特徴

  • クッキーで保持できるデータの個数や長さには制限がある。
  • 本人が書き換えることができるので、機密情報保持には向かない。

メリット

デメリット

・セッションIDの固定化攻撃に弱い。

用途

少量のデータを覚えておくためには使われるが、機密情報等のアプリケーションのデータを保持する目的では使われない。

具体的には、「セッションID」を保持しておくために使われたりします。

なお、セッションIDが一致しているとなりすましも可能なため、十分な桁数の乱数をセッションIDとします。(というか、Javaとか、.NET、PHPの言語で開発されている場合は、自作ではなく必ず標準ライブラリでセッションIDを用意するようにしましょう。世界の研究者が脆弱性についての研究をしたアルゴリズムで生成されているためツールで作るのが安全です。)

クッキーとは?

クライアントのブラウザ側に保存されるテキストデータのことです。(ちなみにセッションはサーバ側で保管されます。)

ブラウザはサーバーから受けたクッキー情報をサーバーのドメインに紐づけて保存します。次の同じドメインへのアクセス時にクッキー情報を付与してアクセスするので複数のリクエスト間で共有したい「状態」をブラウザ側に保管する仕組みになります。

クッキーのデータ構造

キーと値のペアの集合になっています。

セキュリティ上の制約

自分で発行したクッキーにしかアクセスできない。

発行元のホスト情報が記録されていて、それ以外のホストからはアクセスできないようになっています。

物理的な制限

  • 一つのPCに保存できるクッキーの数は、300個まで
  • 1個のクッキーのサイズは、4Kバイトまで
  • サーバー、ドメインごとに20個まで

クライアントでオフにできる。

クライアントのブラウザでクッキーの利用自体オフにできます。

HTTPヘッダにより送信される。

通信傍受の危険性があるので、非常に危険です。

実務では?

まず、クッキーにパスワードや、クレジット情報等の貴重な情報を保持させる実装にはしないです。

クッキーをブラウザが無効化していた場合は?

「URLリライティング」という機能を使い、URLにセッションIDを付加することで対応します。

Ruby on Railsにおけるクッキー

Ruby on Railsでは、クッキーとセッションは明確に紐づいています。クッキーによってやりとりされるセッションIDをキーにセッションは保管されています。(デフォルトのセッション情報の保管場所がRailsではクッキーになっています。)

なので、ブラウザ側で保持されるクッキーを削除すればRailsで作られたアプリにアクセスする際は同一セッションとみなされなくなります。

スポンサーリンク
  • 2018 03.31
  • miyabisan2
  • コメントを書く
  • Webサービス開発, セキュリティ
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2021 12.28

    【セキュリティ】「メッセージ認証コード(MAC)」、「電子署名との違い」について

  2. 2019 12.07

    【Web開発】「一覧画面」の設計について

  3. 2019 12.09

    【Web開発】「子画面」について

  4. 2024 12.25

    bitwarden(ビットウォーデン)の基礎

  5. 2021 09.12

    【Web開発】「push通知」の基本、設計のポイント

  6. 2018 04.01

    【Webセキュリティ】XSS(クロスサイトスクリプティング)対策の基本(JavaやRails、breakmanなど)

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Java】XMLから要素名を指定して値を取得するサン…

【Webセキュリティ】ログイン認証の種類について

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー