セッション変数にパスワードを保持しても良い?

このQ&Aのポイント
  • セッション変数にパスワードを保持することは安全ではないです。
  • 生成した予測不能な文字列を破った場合、セッション変数に保存されたパスワードが漏洩します。
  • セッション変数には最低限の情報のみ保持し、重要な情報は別の安全な方法で保管するべきです。
回答を見る
  • ベストアンサー

セッション変数にパスワードを保持しても良い?

ユーザーログイン機能について、取得した全てのDBユーザーテーブル情報を、セッション変数$_SESSION['★★']に格納しているサンプルコードがありました(2つ程見かけました) ■質問 ・セッション変数にパスワードを保持しても良いのでしょうか? ・生成した予測不能な文字列(セッションキー?)が破られたらどうしようもないので、そういう意味ではセッション変数には何を保存しても良いのでしょうか? 単に保存先が、セッション変数かDBかの違いでしかない? ・あるいは、セッション変数には必要最低限なもの、もしくはセキュテリティに関係ないもの、のみ保存して、その都度DBに問い合わせた方が良いのでしょうか? でも、これって非効率的?

  • re999
  • お礼率61% (476/777)
  • PHP
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
noname#177743
noname#177743
回答No.1

あまりよいやり方とは思えません。 >生成した予測不能な文字列(セッションキー?)が破られたらどうしようもないので、そういう意味ではセッション変数には何を保存しても良いのでしょうか? 単に保存先が、セッション変数かDBかの違いでしかない? いいえ。PHPを利用するサーバーでは、セッション変数を外部から操作しようとする変数汚染攻撃と呼ばれるものが存在します。コーディングに注意していないと、この種の攻撃によりセッション変数へのアクセスを許す危険があります。ですから、 >あるいは、セッション変数には必要最低限なもの、もしくはセキュテリティに関係ないもの、のみ保存して、その都度DBに問い合わせた方が良いのでしょうか?  ↑ これが正しい考え方だと思います。

re999
質問者

お礼

回答ありがとうございましたー

その他の回答 (1)

回答No.2

>セッション変数にパスワードを保持しても良いのでしょうか?あのーーーーーー。もしかしてDBの方にもパスワードそのまま保存しているのか? それセキュリティーを考えるなら絶対にやっちゃ駄目な手法だぞ。 DBの方にはパスワード文字列から生成したハッシュを保存するんだよ。 でもちろんセッション側もパスワードのまま保持なんてしない。ハッシュを保持する。 >生成した予測不能な文字列(セッションキー?)が破られたらどうしようもないので それの心配するならワンタイムセッションくらい使えよ。 >あるいは、セッション変数には必要最低限なもの、もしくはセキュテリティに関係ないもの じゃあパスワードのハッシュも一応セキュリティーに関係するけどそうすると今度は ログインユーザに対してどうやって確認処理をする?

re999
質問者

お礼

回答ありがとうございましたー

関連するQ&A

  • CGI::Sessionでのユーザとの紐付け方法

    【できていること】 Cookieの発行 Cookieへのデータの書き込みと参照 【ここから質問】 ログイン認証があるWebアプリケーションにおいて、セッション情報(ID)とユーザ情報はどのように紐付けているのでしょうか? (ログイン成功時に生成するセッションIDとユーザ情報の紐付け情報をどこにどのように保持するのかがわかりません) Cookie(クライアント側)はセッションIDのみを保持しておいて、サーバ側で紐付け情報を保持するのだと思うのですが、CGI::Sessionではセッション生成時に作成されるcgise_XXXXファイルに書き込むのでしょうか?(そのメソッドか、具体例があれば教えてください) それとも紐付け専用のテーブルを用意しておくのでしょうか、もしくは、ユーザ情報のテーブルにあらかじめセッション情報を格納するカラムでも用意しておくのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • セッション変数のセキュリティ

    プログラム初心者です セッション変数の安全性について教えてください ログインしているかをセッション変数で判定しています。セッションidは使っていません 質問1 悪意をもったハッカーがセッション変数を取得することはできますか?それともセッション変数はクッキーと違い安全なんでしょうか? 質問2 セッション変数の保持時間は決まっていますか? session_start(); if(!isset($_SESSION['id'])){ header('Location: login.php'); exit(); } よろしくお願いします

    • ベストアンサー
    • PHP
  • テーブルデータをSESSIONに保存し、使いまわす

    お世話になります。 現在、ユーザーが記事を作成、編集、削除できるブログシステムを作成しています。 MYSQLのデータベーステーブルには以下の3つを用意しています。 ・usersテーブル:ユーザー名(name)、パスワード等(pw)、記事保存先ディレクトリ(dir)等のユーザ情報 ・articleテーブル:ブログ記事タイトルや本文等の情報 ・imagesテーブル:ブログ記事に使用している画像情報 ここで質問があります。 現在ユーザーがログイン成功時にセッションにはユーザーIDのみを $_SESSION["id"]として保存しています。 そして、記事投稿処理時や、記事編集処理時など、各場面で必要になった情報はそのときselectを使ってテーブルから毎回取り出しています。 しかし、こんなことをしなくても、ユーザーがログイン成功時に、セッションにユーザーID以外の情報も 保存しておけば、以後データベースから取り出す必要がなくなり便利かと思うのですが、セキュリティ面などからこのようなやり方はNGなのでしょうか? 1,まったく問題ないのか? 2,パスワード等の重要データはNGなのか? 3,ユーザーidのみにしておくべきなのか? 問題がある場合、その理由も教えていただけるとありがたいです。 例)ユーザーログイン時に、 $_SESSION["id"]=ユーザーID格納。 $_SESSION["name"]=ユーザー名を格納。 $_SESSION["dir"]=記事保存先ディレクトリを格納。 $_SESSION["article"]=ログインユーザーの記事情報を格納。 お分かりの方、教えていただけたら幸いです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 変数を保持し続ける

    ご回答のほうをよろしくお願いします。 現在、ログイン時にユーザー情報を取得したものを、 保持し続けたいと思っています。 現状としては、public変数にログイン成功時にユーザー情報を持たせて、 それを呼び出すようにしているのですが、 エラー(Exception系)になってしまうと、その情報が消えてしまいます。 なので、エラーになっても出来るだけ保持し続けたいと思っているのですが・・・ 一番簡単な解決方法は、エラーにならないPGを作成すればいいと思っていますが、 結局、突然ネット回線が切れたりするようなエラーが発生しても同じような結果になるのでは? と思っています。 よろしくお願いいたします。

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

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

    • ベストアンサー
    • PHP
  • 【緊急】セッション変数を別のサーバーに渡すことはできる?

    うまく説明できないかもしれないですが、説明します。 今、WEBサーバ と DBサーバ があります。 ASPはすべてWEBサーバにデータベースはすべてDBサーバにあります。 WEBサーバからDBはODBCを介して参照しています。 ASPで作ったログインページがWEBサーバ上にあります。 ログインした時、セッション変数を使ってログインし、 また、ある程度時間がたつとセッションが切れてログインページに 戻らせるような仕組みにしていて、全ページにその処理をいれています。 今、実現したいことは ログインページだけをWEBサーバに 置いたままにして、ASP(HTML)ファイルをDBサーバ に移動した後でも動かしたいのです。 (1)WEBサーバ上のセッション変数をDBサーバに渡してやりたいのですが、 可能でしょうか?可能ならばどのようにすればよいでしょうか? ASPで使っている言語はVBScriptです。 WEBサーバにはDBに関係ない、メニューなどだけを置いて DBに関係するページはDBサーバに置きたいのです。 OS WINDOWS2000 使用ブラウザ IE 3,4,5,6 (バージョンは特に今はどれでも構いません) どうか、どなたか手がかりだけでも教えて頂けませんでしょうか? よろしくお願い致します。

  • セッションに関して

    こんばんは。お世話になっております。 現在、LocalにてDBを連動させたウェブアプリを開発しているのですが、レンタルサーバーにアップさせた際、今まで問題が無かったところに障害が発生してしまいました。 と申しますのも、DBにてIDおよびパスワードを参照してログインする、といった機能を有しており、ログインした際、DBに登録のあるIDなどを$_SESSION[""]= と、セッションに格納してIDを持ち歩いているのですが、他の会員(ここでいうマイページ)のページを覗くと、セッションに格納されたIDが、訪問した会員のIDと入れ替わってしまうのです。 入れ替わってしまうようなコードが存在しているのか?と、確認してはいるものの、そのようなものは見つかりません。 そもそもDBに参照した際、そのDBにあるデータを$_SESSION[""]に代入するだけのコードとなっているのですが、この時点で間違っているのか、単に入れ替わってしまうコードを見落としているだけなのか、を客観的にお聞かせ願えればと思い、投函させていただきました。 お知恵を頂くには言葉足らずなところもありますが、アドバイスのほどいただければ幸いに思っております。宜しくお願い致します。

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

    Weblogic10.0.3にてWebアプリケーションの 開発を行っていますが、解決しない問題があり 質問させていただきます。 現在、ログイン画面にてユーザーIDとパスワードを 入力してログイン後各処理を行うアプリを開発していますが、 ログイン時のユーザー情報をセッションに保持する作りに していますが、ログイン時にjsessionidがURLに 表示されてしまいます。 (例:http://testserver:9000/TestApp/Test.do;jsessionid=vFqyK3xMrJ9QCLJnW0X0r2w17ylBVhhD2VQT4qGwdMsGvhnZHdJQ!-425034523) 一度ログインするとそのブラウザを閉じるまでは、画面遷移をしても 何度ログイン・ログアウト処理(セッションの生成・削除)を 行っても二度と表示されません。 (画面遷移はStrutsで制御しています) セッションIDをCookieに保持する方法もあるようですが、 なるべくCookieを使いたくないので、セッションに保持するように したいのです。 web.xml、weblogic.xml、Weblogicサーバーの設定などで セッションIDを表示しなくなる方法がありましたら 教えてください。よろしくお願いします。

  • 初歩的な質問です 変数の値を保持

    perlの勉強中なのですが、 例えばCGIを呼び出した際にある特定の処理により、 変数$hogeにスカラーコンテキストを格納したとします。 そして次にCGIが呼び出されるまで、その$hogeに格納されているスカラーコンテキストは保持されたままでいるのでしょうか?保持されていれば、その保持されていた値を利用してまた新たな値を生成して$hogeに格納できて非常に便利だと思っています。実際、今私がしたい処理は、これができればかなり楽なはずなんです。 ですが、私自身は、保持できないのでは?と思っています。ですので、その保持しておきたい値を外部ファイルにいちいち格納してやる必要があるのかなと思っています。そして必要なときはその値を外部ファイルから得て、そしてまた外部ファイルの値を書き換えてという作業が必要になるのでは?と思っています。 また、保持できるのであるならば、どのようなことをすればリセットできるのでしょうか。つまり、そのサイトから一度離れればいいのでしょうか?

    • ベストアンサー
    • CGI
  • セッションにはどんなデータを保存するべきか

    セッションにどんなデータを保存していいのかよくわかりません。 私はセッションというのはプログラムでいうところのstatic変数みたいな物かと考えているのですが、 この認識であっているでしょうか? 具体的にはセッションにはユーザID等のWebシステム上全体で保持するべき値のみが許されて、A,B,Cの3つの画面間でのみ共有するような値はセッションに保存してはいけないという具合です。 抽象的な質問ですが、よろしければご回答下さい。

専門家に質問してみよう