• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:hiddenとsession)

hiddenとsessionの違いとセキュリティ的な優位性は?

このQ&Aのポイント
  • hiddenとsessionの違いについて説明します。
  • hiddenは、データをフォーム内に隠し、ソースコードに表示されますが、sessionはサーバー側にデータを保存し、セキュリティ的に優れています。
  • 重要なデータの引渡しを行う場合は、sessionを使用することをおすすめします。

質問者が選んだベストアンサー

  • ベストアンサー
  • galluda
  • ベストアンサー率35% (440/1242)
回答No.1

がると申します。 んと…情報をhiddenで渡すのは、いくつかの観点から明確に「セキュリティ的にNGである」ことが多いです。 たまに「hiddenでも大丈夫」という方がいらっしゃいますが。簡単に書くと、hiddenで情報をやり取りするということは「アタック可能かもしれない箇所を増やす」だけなので。sessionに「しない」理由は一つもありません。 ですので、重要であるないに関わらず「可能なかぎり」hiddenは用いない、というのがセキュリティ的には正解になります。 より正しくは。 session維持のための最低限の情報のみをhiddenでやり取りし、それ以外のすべての情報は「sessionと紐付いた形でサーバ側で管理する」のが正解になります。

sadacha
質問者

お礼

galluda様 おはよう御座います。いつもお世話になっております。 などほどねぇ・・と、考えさせられました。 有識者の的確なアドバイスに感謝しつつ、早速のご回答を有難う御座いました!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • セッションについて

    PHPは勉強してからまだ、日が浅いためどなたかご教示いただけないでしょうか? 現在会員ページの中にフォームを作っています。 会員ページはログイン時にmysqlから会員情報を呼び出し、セッションを使ってページを移動しています。 会員情報の編集などをしたい場合にフォームを使って編集をできるようにしています。 フォーム入力ページ→確認ページ→登録完了ページとなっています。 登録完了になるとデータベースの内容が書き換わる、もしくは追加される。 ここでご質問なのですが、 登録完了ページにてリロードすると、空の値がデータベースに追加されていしまいます。 これを回避する方法はありますでしょうか? 例えば登録完了ページでリロードしたときは不正に入力されているなどの表示や、フォーム画面に戻るなど空の値がデータベースに登録されない方法を探しています。 自分の中ではログイン時に発行されるセッションとは別にフォームはフォームでセッションを与えた方が良いのかと考えています。 どうしたらよいのかわからず困っています。 最適なのがおわかりの方がいらっしゃいましたら、ご教示いただけないでしょうか?

    • ベストアンサー
    • PHP
  • セッションについて

    なんとかセッションを使えるようになってきた程度のものですが ここにきてちょっとした事が気になり質問させて下さい。 ポータルサイトをつくっており会員登録,ログイン,登録情報変更など 複数のフォームが存在します。 例えば・・・ ログイン時のセッション $_SESSION['login_id'],$_SESSION['login_pass'] 会員登録時のセッション $_SESSION['touroku_id'],$_SESSION['touroku_pass']など10程度 会員登録情報変更時のセッション $_SESSION['henkou_name'],$_SESSION['henkou_mail']など10程度 ・・・のような感じです。 全てセッションで管理していることが問題なのかもしれませんが いろんなページ(フォーム)をまわる度に多数のセッションを持っている 状態となってしまいます。 現状は、それぞれのページで必要のないセッションについては1つづつ unsetで明記し消去しているのですが多数あるのでどうも手間に感じて しまいます。 session_destroyで一括消去できれば楽なのですがログインしている 場合に必須なセッションもありそれもできない状態です。 この場合皆様はどのように管理をしているのでしょうか? 調べてみたのですが有力な情報もみつからず今後の参考になればと思い 質問させて頂きました。宜しくお願いします。

    • ベストアンサー
    • PHP
  • sessionについて

    こんばんは。お世話になっております。 題名にあるようにセッションに関してアドバイスいただきたく投函させて頂きます。 (他に似たような質問はあったものの、上手く解釈できなくて・・) 現在、DBに登録された会員のみがログイン出来る機能を有したサイトを作成しておりますが、DB参照の後、idなどを、セッション変数に代入し、そのデータを持ち歩いています。 書籍や他の方からセッションIDのことを耳にしますが、いまいち、その必要性というものを理解する事が出来ないのですが、このセッションIDは、どこでどういったところで必要になってくるものなのでしょうか? また、チェックボックスなどで任意により、自動でログインする機能を持たせるとした場合、クッキーを用いるという事までは理解したのですが、調べた範囲では、先のセッションIDをクッキーに保存させる・・という内容を多くみました。 現在、セッションハイジャックを避けるようサーバー側に保存されるセッションIDを書き換える設定をしているのですが、このような場合はクッキーを用いての自動ログインはどうしたらいいのだろう?と糸口が見えずにいる次第です。 以下、アドバイスを頂戴したいことをまとめると、 1.ログイン状態を認識させるためには、セッション変数だけで事足りるのか?また、この場合においてのセッションIDの意味するとは? 2.セッションハイジャックを避けるためサーバー側に保存させるセッションIDを随時変更している場合、自動ログイン機能を用いるには、どのような流れ(内容)になるのか? です。お忙しい中恐縮ですが、アドバイスなど頂けたら幸いに思います。宜しくお願い致します。

    • ベストアンサー
    • PHP
  • セッションについて

    セッションの管理について疑問があって質問させていただきます。 PHPの単一サーバでのセッション管理であれば、$_SESSIONを利用すれば良いと理解しています。 例えば複数のサーバで運用する場合はクッキーを利用するという方向で良いでしょうか?$_SESSIONだとセッションの引き渡しはできないですよね。(?) ただし、お金があってロードバランサーを使った場合はできると理解しています。 複数のサーバで運用する場合、会員登録の機能ではDBと連携して 入力画面でクッキーを発行 setcookie("regist","hogehoge","有効期限を設定"); 確認画面 Cookieの値をDBと通信して確認 登録完了の画面で Cookieの値をDBと通信して確認 会員登録がうまくいっていれば setcookie("regist","","有効期限を巻き戻し"); として重複登録を防ぐ。 こんな感じで良いでしょうか。 間違い、誤解があれば教えてください よろしくお願いします。

    • ベストアンサー
    • PHP
  • ファイル間のデータの受け渡しについて hidden? session?

    1.php (フォームを表示) 2.php (入力内容の確認ページ) 3.php (最後のページ、送られた値を使用し、メール送信やデータベースに書き込むなどの処理をしたい。) とhiddenを使い、3つのファイルを作成しました。 ファイル"1.php" <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title></title> </head> <body> <form action="2.php" method="post"> <input type="text" name="data1" value="データその1"> <input type="hidden" name="data2" value="隠しデータ"> <input type="submit" name="" value="送信"> </form> </body> </html> ファイル"2.php" <?php echo "<h1>確認ページ</h1>"; echo $_POST[data1]."<BR>"; echo $_POST[data2]; print<<<_HOGE_ <form action="3.php" method="post"> <input type="hidden" name="data1" value="$_POST[data1]"> <input type="hidden" name="data2" value="$_POST[data2]"> <input type="submit" name="" value="送信"> </form> _HOGE_; ?> ファイル"3.php" <?php echo $_POST[data1]."<BR>"; echo $_POST[data2]; ?> 2.phpの(入力内容の確認ページ)を見ているときに、他の人が2.phpにアクセスして入力内容を盗み見る事は出来るのでしょうか? (2.phpに直接アクセス出来ないように、リダイレクト処理はするつもりですが。) 2.phpから3.phpに値を渡す場合、このようなhiddenの使い方は間違っていますか? セッションを使った方が良いのでしょうか?

    • ベストアンサー
    • PHP
  • 携帯でhiddenが使えない

    PHPで携帯用アプリケーションを作成しています。 会員登録のようなものです。 認証フェーズで幾つかの情報をhiddenで付加し、DBへ登録しようと思っています。 PCでは問題無く登録できたのですが、携帯で試すとhiddenで渡されるべき部分が欠落してしまいます。 携帯の場合、PCのブラウザのようにソースコードを見ることもできず、途方に暮れています。 携帯用HTMLではhiddenは使えない、などということは聞いたことが無いのですが、実際そのような状況に遭遇してしまっており、ご存知の方が居たら教えてください。 ちなみに、docomoのSH-02Aで検証しています。

    • ベストアンサー
    • PHP
  • session_cache_limiterについて

    お世話になっています。 キャッシュで、悩んでいます。 ログイン(セッションに名前などを登録)  ↓ 入力フォーム(「登録」ボタンを押す)  ↓ 判定(エラーが発生したら、「戻る」ボタンを押してもらい、 入力フォームに戻る。) という、ごくありきたりな、事をやっているのですが、 iniファイルで、session_cache_limiter('nocache') にすると、「戻る」ボタンを押しても、先ほど入力 したデータが全て消えています。 今度は、入力フォームの先頭で、session_cache_limiter("public");を 入れると、確かに、「戻る」ボタンを押しても、先ほど入力したデータが 保持されていますが、この状態で、 session_unset(); session_destroy(); をして、再度、入力フォームに行っても、前回のセッション情報 (前回ログインした、ユーザー名)を保持したままになっています。 セッションの情報のキャッシュは破棄して、入力フォームのデータ はキャッシュしたいのですが何か良い方法は、無いでしょうか? session_cache_limiter("private");にしても、結果は同じです。 環境は、php4.06 apache1.3 です。 よろしくお願い致します。

    • 締切済み
    • PHP
  • セッション使用時のフォームのデータ

    PHPでsession_start();とした後のフォームで、その後にフォームで入力したデータをPOSTで送って確認画面を表示したとします。 ここで、最初のsession_start();がなければ、ブラウザの戻るボタンで前のフォーム入力画面へと戻っても、入力したデータは保存されたままですが、session_start();とした後では、入力したデータが全てクリアされてしまうようです。 ちょっと修正したい時に、すべてクリアされてしまうとかなり不便なのですが、何かよい方法はないものでしょうか?セッション変数にPOSTするデータを保存する以外で方法はないものでしょうか?

    • ベストアンサー
    • PHP
  • SESSIONの取得タイミングについて

    現在簡単な会員登録のサイトを作っているのですが フォームに入力してもらった値を同じ画面でDBに登録するのではなく、 確認画面を新しく起こしてそこで登録ボタンを押せばDBに書き込むようにしたいのですが上手くいきません。 処理の順番は 1.フォームの確認ボタンを押されると値をSESSIONに登録(PHP)  ↓ 2.確認ボタンで新しいWindowをJavaで起こします  ↓ 3.確認画面でSESSIONの値を確認  ↓ 4.SESSIONの値をDBに登録 としたいのですが どうも2.の処理が1.よりも先に入って確認画面にはSESSIONの値が入っていません。 親WindowではSESSIONの値は入っているのですが。 確認ボタンに値の取得と新しいWindowを開くJavaと2つの機能を持たしていることが原因だろうとは思うのですが、 Windowを開くタイミングを遅らせる等の処理でうまく回す方法はありませんでしょうか? (Javaを使ったのはWindowサイズを変更したかったからです。) ご存知の方おられましたらご教授願えないでしょうか。 よろしくお願いします。 環境 レンタルサーバーにてPHP4+MySQL4

    • 締切済み
    • PHP
  • セキュリティの高い会員登録方法について

    会員登録をどういう実装にしたら良いのか悩んでいます。 セキュリティの鉄則で、ログイン前にセッションIDは発行しないというのを見かけました。 そこで2点質問です。 1.会員登録にセッションを使用しても大丈夫でしょうか? 2.会員登録は不正なメールアドレス入力を避ける為、 一度仮登録メールを送るべきでしょうか? 試行錯誤した結果、以下パターンのいずれかにしようと思いますが、PCサイトで一般的なパターンとしてどちらが望ましいでしょうか? ■パターン1 1.会員登録(フォーム情報はセッションに保存する) ○メリット:ブラウザの戻るを行っても入力状態が残っている 2.会員登録確認メール(キーとなる引数をセット) 3.メールのURLをクリックすると会員登録完了セッションを再生成?し会員状態となる。 ■パターン2 1.会員登録(フォーム情報はHIDDENで持ちまわる) ×デメリット:ブラウザの戻るで入力状態が消える場合がある。 ○メリット:ログイン前にセッションIDを再生成しなくて済む 2.会員登録確認メール(キーとなる引数をセット) 3.メールのURLをクリックすると会員登録完了セッションを生成し会員状態となる。

    • ベストアンサー
    • PHP