セッションIDについて

このQ&Aのポイント
  • セッション管理について、まったく経験がない方へのアドバイス
  • IPアドレスとドメイン名でのアクセス制限についての疑問
  • セッションIDの使い方と管理者と一般の機能の切り分けについて
回答を見る
  • ベストアンサー

セッションIDについて

セッション管理について、まったく経験がないので、アドバイスお願いいたします! 現在のWEBシステムですが、なぜかIPアドレスのみでしかアクセスできない作りになっています。 それでは困るので、ドメイン名でアクセスできるようにと改修をお願いしたところ、 今度はドメイン名のみでしかアクセスできないがいいか?・・・と質問が届きました。 普通、WEBシステムを使うほうから考えますと、 IPでアクセスしようが、ドメインでアクセスしようが どちらでも動くのが当たり前のように思うのですが。 プログラムの作りでそうなってるのかもしれませんが これって変ですよね? それともよくあることなのでしょうか? 理由を確認したところ、 サーバ名を用いたURLでの構築を行っていないため、ページ遷移を行うとログインエラーが発生する箇所があるとの事。 システムは管理者の機能と一般の機能があり、当然別々の動きをしなければならないのですが 推測するに、IPアクセスだったら管理者、ドメイン名だったら一般というような判断をしているのでは?と思われます。 IPアクセスのみというのを知らずに、ドメイン名でアクセスして試験をしていたら 途中でURLがIPに変わり(cgiでphpが動いて)、エラーになったのです。 session情報は同ドメイン上で有効であるため、 IPでアクセスした場合とドメイン名でアクセスした場合ではセッション情報を引き継げないため、 ログイン情報無しと判断されるため・・・ が原因ということなのですが 実際、SESSIONIDにはどんな内容が入ってくるのでしょうか? 管理者と一般のふたつの機能をセッションIDを使って、切り分けるのはできないことなのでしょうか? セッションIDは使ったこともないので問題外かもしれませんが 自分だったら、今は管理者、今は一般・・・というような情報をhiddenに持つとか、 リンクできる情報をテーブルに持つとかするかな... なんて思いながら、セッションID ってこんな時、どうやって使うのかな? と疑問だらけです。 セッションIDを使って、ふたつの機能を使い分けることはできないのでしょうか? または、ふたつの機能を切り分けできる他の方法などありましたらアドバイスいただけないでしょうか?

  • jg1wjz
  • お礼率91% (148/162)
  • CGI
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.1

> プログラムの作りでそうなってるのかもしれませんが > これって変ですよね? それともよくあることなのでしょうか? これは変でも何でもありません。 表示されるHTML内で張られているURLリンクパスが内部的な事情で相対パスでなく絶対パスで管理されているのでしょう。 変えるのなら全部変えないと、ご自身で経験されているようにリンクをたどっていてURL記述が変わるとセッションが切れてしまうからです。 セッションはサーバ側だけのものでなく、クライアント側のクッキー情報との連携があって成立するものです。 ユニークなIDをブラウザ側でクッキーとして保存してそのIDをサーバ側で参照してセッションを確立するのです。 当然、クッキーは「ドメイン名」や「IPアドレス」でなく「URL情報」(+期限)をベースに保存されます。 URLをドメインでアクセスすればドメイン名、IPでアクセスすればそのIPアドレスでクッキーは保存されるのです。 これは、サーバがどうたらというものでなくインターネットの仕組みの問題です。 URLのA(ドメインまたはIP)で保存されたクッキーがURLのB(ドメインまたはIP)から参照できるようならセキュリティ上大問題です。 URLが変わってクッキー情報が取得できなければセッションは成立しませんので、セッションは切れて当然です。 もうひとつドメインとIPはDNSというサービスでヒモ付けされてはいますが絶対ではありません。 近年のインターネット参加者は元の仕組みを知らないため、まるでドメインがあって当たり前のように思われていますがDNSという分散型データベースのいちサービスによって成り立ってます。 黎明期にはDNSも現在のように統合されておらず、草の根DNSサービスとかもあって社会政治的(管理されるのがやだとか)または経済的(フリーで登録したいとか)な意味合いから各自のポリシーによってDNSシステムを選択することができた時代もありました(メールもドメインでなくIPで普通に送受信できていました)。 近年ではウイルスやマルウェアによってIPとドメインのヒモ付けがクライアントのPCレベルで偽装工作がされるようになっています。 あくまでインターネットのホスト間通信の基盤はIPアドレスだということはキモに命じておいて下さい。 DNSはWebやメールと同じ立場のいちサービスに過ぎないもので、有って当たり前というようなものではない(無いと困りますけどね)のです。 さらにもうひとつ、近年ではWebサーバに仮想ドメインという機能も搭載されて、ひとつのIPに複数のドメインをぶら下げ、ドメインごとに設定によってコンテンツを分けるものも有ります。 そのサービスの場合にはIPアドレスって表面的には役に立たなくなってしまいますね。 最後にセッションIDで機能を使い分ける方法とやらですが、ログイン(セッション接続)状態では管理モード、ログアウト状態では一般というのが普通ですので、その時点で切り分けはできていると思われますがいかがでしょうか。 長文失礼いたしました。

jg1wjz
質問者

お礼

詳しくアドバイスいただき、ありがとうございます。 今回、カスタマイズが入り、 以前できていたIPからでもドメイン名からでもアクセス可能(どちらかに統一することは条件でしたが)だったのが いきなり、「IPからのみログイン可能」といわれたので、「何故?」と思った次第です。 エンドユーザは、今まで通り、ドメイン名で作業をするのがわかっていますので慌てました。(クライアントパソコンのデスクトップに貼り付けているショートカットを使うので) 質問させていただいた後、ソフト会社とのやりとりで IP、ドメインどちらからでも可能(ログイン時のアクセス方法で統一)ということがわかりました。 日本語は難しいですね。 「ドメイン名でのみアクセス可能」の裏には、「IPまたは・・・」という文字があったようです。 まだまだWEBは奥が深くて理解するまでにはたくさんの勉強と経験が必要のようです。 わかりやすく説明いただき、ありがとうございました! また何かありましたら、よろしくお願いいたします。

関連するQ&A

  • WebサーバとWebアプリケーション。セッションID、ユーザーID、パスワードを管理するのはどっち?

    セッションIDを習ったとき、 私の記憶ではセッションIDを管理するのはWebサーバと習いました。 普通、このOKWaveのようにログインを要するようなWebページは ログイン時に渡されたユーザーIDとパスワードを セッションIDに紐付ける形でサーバ側で管理することによって、 このセッションIDを通して、同一ユーザーと見なすということだったと思います。 しかし、ここでひとつ疑問が出ました。 ログイン時に、「自分は誰か、正しいユーザーか」ということを通信先に教えるために ユーザーIDとパスワードを入れますよね? でもここでユーザーIDとパスワードがほしいのはWebサーバではなく、 ユーザー情報を持っているWebアプリケーションではないのか?と考えました。 しかし、私はセッションIDはWebサーバが管理すると習ったように記憶しています。 ということは、 ・セッションIDはWebサーバが管理する ・ユーザーIDとパスワードはWebアプリケーションが管理する ということでいいのでしょうか? つまり、セッションIDとユーザーIDの対応表はWebアプリケーション側で実装し、 クライアントのリクエストから呼び出されるWebアプリケーションのプログラムは 「この呼び出した相手のセッションIDを教えてください」と Webサーバに聞くようなプログラムにしなければならないという認識で合っているのでしょうか? よく分かってないので、聞きたいことが非常に伝わりにくいかと思いますが、 よろしくお願いします。 長い上、お粗末な文章を最後まで読んでいただきありがとうございました

  • セッションIDについて

    セッションIDの認証機能についてですが、 IDとパスワードを自動認証しているページで、 セッションID収集し、書き換えると 自動認証ができなくなると思ったのですが、 なぜか、実際にはできてしまいます。 具体的には、 IECookiesView v1.70にて、 クッキーの中のセッションID (たとえばアマゾン)情報を編集して、 再度アマゾンにアクセスしてみたのですが、 トップページに自分の名前が書いてあります。 なぜ、このようになっているのか、 ご存知の方がいれば教えていただけますでしょうか。

  • セッションIDの引き継ぎ方 【html/php】

    携帯サイトでのセッションIDの引き継ぎ方について質問です。 (1)ページにアクセス(セッションIDあり) ↓ (2)申込ボタン ↓ (3)申込予約フォーム このときに、(2)⇒(3)へアクセスするとセッションIDが切れてしまいます。 (3)へリンクする際に htth://www.123?s=[セッションID]  とさせたいのですが、 方法が全くわかりません。。。また、詳しい者が周りにおらず、困っております。 「こういうソースを書けばいいよ」というものを具体的にご教示頂きたく。 こちらに書きこみをさせて頂きました。 ページはhtmlでできれば一番良いのですが、htmlだとむつかしいとの話も聞き、 php形式でも、どちらでもよいので、 とにかくURLの後ろにセッションIDを持たせる方法を 教えて頂きたいです。。 私が全くの無知のため、足りない情報などあるかとおもいますが、 言いたいことを読み取って頂けますと、幸いでございます。 何卒宜しくお願い致します!!!!

  • 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を表示しなくなる方法がありましたら 教えてください。よろしくお願いします。

  • セッション関連について!!

    こんにちは!! お世話になります(^^ゞ この度、サイトのURLにPHPSESSID を付けてセッションを管理していたのを辞めようかなと思いました。 理由はドコモ端末の場合表示速度が遅くなるからです。 guid=ON にてカード番号を取得するようにしたのですがモバゲーなど大手さんのサイトもguid=ONで管理しているみたいですけどguid=ONで管理していてもなぜわざわざURLにセッションを付加しているんですか。。。 guid=ON phpファイル内に登録している端末とアクセスしている端末カード番号が違ったらログアウトするようにしたらURLにセッションを付加する必要ないと思いました。 ログイン時間もありますからログインから何分後とかでもいいんですよね。。。 URLにセッションIDを付加する意味教えてください。

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

    php初心者&ど素人です 勉強のためにphpとmysqlで簡単なログイン機能を作ってみようと思いました しかし、Locationでページ移動したときのセッションがセキュリティ的に安全なのかわかりません ログインフォームのlogin.phpから自分自身に送信、ログインできたらセッションを付けてから header("Location:hoge.php");でhoge.phpに飛ばしています ログインした後のhoge.phpページではログイン確認をセッションidがあるかだけ確認しています セッションidがなかったらログインページ戻す if(!$_SESSION['id']){ header('Location: login.php'); exit(); } 質問1 セッションidは表示されている誰でも見れるidなのでセキュリティ的にまずいですか? 簡単にセッションのっとれるもんなんでしょうか? 質問2 一般的にはどうやているのでしょうか? ログインページ全て(例えば編集画面とか会員情報とか)にmysqlから暗号化されたパスワードを取得して、それをセクションに入れて、また、mysqlからパスワードと照合したりしてるんでしょうか? よろしくお願いします

    • ベストアンサー
    • PHP
  • セッション管理もどきを自作で

    通販サイトを作ろうとしています。 ログインにはIDとPASSが必要ですが、ログイン中であることを知るためにログイン成功時にIDとPASSをそのまんまクッキーに記録しています。 その時点でセキュリティは最悪なので、セッションID管理というやつをやろうと思ったのですが、 CGI::Sessionだか何だかの説明ページが全く持って意味不明でしたので それっぽいことを自作しようと思います。 以下の流れのプログラムでセッション管理と同じような事をしていると思うのですが、あっていますか。セッション管理というものがいまいち分かりません。 ・WEBページよりIDとPASSを入力してログイン ↓ ・データベースにアクセスし、正しい情報であれば、  ランダムに作成した20桁くらいの文字列+IDをクッキーに保存、  その文字列をデータベースに保存、同時にIPアドレスも保存。  保存した時間も保存する。 (例:ID=OSIETE だったら、afkgiornsfshifownsiwOSIETE みたいな文字列になる) ↓ ・ページを移動するたびにクッキーから文字列を取得し  データベースに保存されているかを調べる。  同一の文字列および同一のIP、および保存時間が現在時刻の24時間でなければNGとする。 ↓ ・ログアウト時、クッキーに保存された文字列と同じものをデータベースから削除する

  • セッションIDの保存場所について

    オンラインショッピングサイトや、SNSサイトなどのWebシステムで クライアントの状態を保持するセッション情報を識別するためのセッションIDは、 アプリケーションサーバーの中にあるセッション情報を持つインスタンスの中に持たせておくものなんでしょうか、それともDBに入れていったん永続化してしまうものなんでしょうか。

  • ASP.net MVC セッションハイジャック対応

    どうにも困ってしまい初めて質問させていただきます。 現在、ASP.NET MVC 2.0で運用保守しているモバイル会員向けのサイトがあります。 従来のWeb.Configは <sessionState mode="InProc" timeout="30" regenerateExpiredSessionId="true" cookieless="true"/> のようにしており、URLにセッションIDが表示されるように設定されていました。 これがセキュリティ上問題ということで、ログインの前後でセッションIDを変更することになり、 ログイン処理時に Session.Abandon(); を実行して、セッションを破棄して、ログイン後のページでセッションIDが変更するようにしており これはうまく想定通りにいっていました。 その後、最近スマフォのアクセスの方が増えてきたこともあり、極力URLにセッションIDは表示したくないということでWeb.Configを以下のように変更しました。 <sessionState mode="InProc" timeout="30" regenerateExpiredSessionId="true" cookieless="AutoDetect"/> スマフォやPCからのアクセスでは想定通りURLにセッションIDが表示されることもなく、 ログイン前後でセッションIDが変わりました。 しかし、クッキー非対応の携帯で確認すると、URLに表示されるセッションIDが ログイン前後で変更されなくなってしまいました。 iモードシュミレータを使いデバッグ実行で直接セッションIDを確認しても、 やはり変わっていませんでした。 AutoDetectでクッキー非対応の端末でセッションIDを変更する方法はあるのでしょうか? いろいろ調べたのですが直接関係するような内容は見つけることができず、 質問させてもらいました。 よろしくお願いします。

  • ログインID体系変更に伴う新旧IDアクセス権継承に関して

    ログインID体系変更に伴う新旧IDアクセス権継承に関して Active Directoryを用いたWindowsドメイン認証行い、ファイルサーバ、プリントサーバなどの機能を提供しているシステムがあります。(← 非常に一般的なサービスですが。) ユーザID体系を変更することになり、円滑な移行処理を行うために、新IDでログインしても旧IDの権限を引き継げないか検討しています。 特にファイルサーバは、ホルダー毎にアクセス権が付与されており、その権限引継ぎを実現したいと考えています。旧IDは、社員番号(例えば、aa9999)でしたが、新IDは、個人名(例えば、maeda.atsuko)でログインするようになります。"maeda.atsuko"でログインしても、"aa9999" でログインした時と同じアクセス権を付与できないかと考えています。 本来は、セキュリティグループなどで管理すべきでしょうが。 以上

専門家に質問してみよう