yahoo にログインしていると自分ヤフーIDがでていますが、これはどういった仕組みでやっているのでしょうか? クッキーをつかっているように見えるのですが、そうでしょうか? 毎回ページをみせるたびに、DBたたくとはおもわれないのですが、そうでもないのでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/02/22 22:50:37
  • 終了:--

回答(7件)

id:skky No.1

skky回答回数98ベストアンサー獲得回数42005/02/22 22:53:21

ポイント16pt

Cookieの可能性もありますが、こうした仕組みの一般論から言うとDBからの取得データをメモリ上に保管しておくと思います。そうすることでDB検索負荷は初回のみですみます。

id:kaiketsu

ありがとうございます。もうちょっと方法特定したいので、次の方の回答まちます。

2005/02/22 23:00:56
id:niyari123 No.2

niyari123回答回数30ベストアンサー獲得回数02005/02/22 22:57:41

ポイント16pt

クッキーです。

(以下参考URLより抜粋)

>クッキーが有効であれば、

>他のホームページへ移動してもYahoo!メールにログインした状態が保たれます

ヤフーメールのヘルプですが、仕組みはここはてな?も含めて他も同じです。

id:kaiketsu

参考URL教えてもらえますか? 方法も書いてあるとありがたいです。

2005/02/22 23:06:12
id:english No.3

english回答回数304ベストアンサー獲得回数02005/02/22 23:06:10

ポイント16pt

Cookieを使っています。ただし、IDを直接cookieに焼くのではなく、セッションIDと呼ばれるものを普通は焼きます。そして、そのセッションIDに関連付けられるIDは一通りしかないため、IDを特定できます。

ですから、必ずデータベースに毎回アクセスし、cookieとしてサーバ側に送信されてきたセッションIDで検索し、そのセッションIDの有効性を検証した上で表示します。

一定の時間が経過しているものなどは、強制ログアウトさせたりします。一定お時間内のものであれば、そのセッションIDに関連付けられたユーザーIDの情報を表示させています。

id:kaiketsu

? データベースは毎回たたくわけですね。

2005/02/22 23:07:11
id:tiopepe No.4

tiopepe回答回数7ベストアンサー獲得回数02005/02/22 23:15:05

ポイント16pt

http://privacy.yahoo.co.jp/privacy/jp/cookies/details.html

Yahoo! JAPAN - プライバシーの考え方

Yahoo! JAPANにログインすると、yahoo.co.jpのドメインにB,U,F,Y,Tという名前のCookieがセットされますね。この情報を元に、それぞれ特定のエリアのユーザの情報を特定しているのでしょう。呪文のようなCookieの値からユーザ情報をひもづける際に、DBを参照することはありうることです。その場合でも、DBから情報を取得するのはコストがかかりますので、後一定期間はメモリにキャッシュしてパフォーマンスをあげる仕組みがあるでしょう。

id:kaiketsu

実際にやっている手法を知りたいのですが、無理でしょうか?

2005/02/22 23:19:24
id:tiopepe No.5

tiopepe回答回数7ベストアンサー獲得回数02005/02/22 23:33:28

ポイント16pt

実際にYahoo!がどうしているかはわからないのですが、自分で簡単に実現するには、ログイン時に認証されたログインIDをSet-Cookieしておいて、後日、再度アクセスされたときにブラウザが保存しているその値を、Cookieヘッダとして送られてくるログインIDを見つけるので可能です。

プログラミング言語を特定すると、もう少し踏み込んだ説明ができるかもしれません。

id:kaiketsu

プログラム言語というより、データベースを叩くのかどうかが気になります。負荷ができるだけ低い仕組みになっているかどうかを知りたいのです。

2005/02/22 23:48:16
id:shiv No.6

shiv回答回数36ベストアンサー獲得回数02005/02/23 01:28:09

ポイント15pt

一般的な話になりますが、毎回ページを見る度にDBを参照しに行く事はまずありません。

ただ、初回のアクセスの時に、サーバーのメモリー等の高速な媒体の上に、そのユーザーのID情報が乗ってなければ、DBを見に行く事になります。この時、メモリー上にその情報を一定期間キャッシュしておきます。

一度見に行けばユーザー情報は、セッションと言う物に置き換わり、ブラウザーとサーバー両方で保持し投げ合います。

この時、サーバーはセッションをDBに書き込んだりもしますが、参照自体はメモリー上で完結するので、DBアクセスに関する負荷やコストが軽減出来ると言う事です。

セッションDBは、今回の質問とはあまり関係無いので、気にしないでください。

例えば、ブラウザーを立ち上げて、Yahooを見たら、ブラウザーがユーザーIDなどの情報を暗号化したCookieを投げます。

サーバーは、そのCookieをまず自分のメモリー上から探します。

無ければ、DBへ探しに行き、引っ張ってきます。

情報が確認できれば、そのブラウザーとサーバー間でログイン済みのセッションとして、ユーザーID情報を共有します。

それ以降、ブラウザーとサーバーのメモリー上でセッションのキャッチボールをします。

ブラウザーを閉じると、ブラウザー側からそのセッションは消えます。

またブラウザーを立ち上げ、Yahooを見てもセッション情報はありませんが、ユーザー情報がサーバーのメモリーに残ってますので、DBにアクセスする事なく、ログイン済みのセッションを取得する事が出来ます。

この時、ログインに掛かるDB負荷は、ほぼ0と言う事になります。

「er」とか「ry」は「ー」(長音)にする派なので、冗長ですみません。

何か、お気付きの点があればご指摘願います。未熟者故・・・m(_ _;)m

id:kaiketsu

>サーバーは、そのCookieをまず自分のメモリー上から探します。

の部分はどういった仕組みを使うのでしょうか?

理屈ではわかるのですが、

2005/02/23 01:43:20
id:kuromaku0103 No.7

kuromaku0103回答回数28ベストアンサー獲得回数02005/02/23 12:26:16

ポイント15pt

http://e-words.jp/w/E382BBE38383E382B7E383A7E383B3.html

セッションとは 【session】 - 意味/解説/説明/定義 : IT用語辞典

前置きとして、ブラウザに出てくるのはIDだけですよね?ログインが必要な操作については必ずパスワードの入力が求められる仕様になっているはずです(ブラウザによってはパスワードを管理してくれるものもありますが)ユーザーIDを表示するまでの仕組みを下記に記します。

①ブラウザが自分自身の中を検索し、該当サイト(例えばyahoo)のクッキーを持っていれば、そこからIDを読み取り、画面に表示する。→ログインが必要な操作(例えばMyオークションの表示等)をしようとすると、パスワードの入力が求められる。パスワードを入力してログインを押すと当然、DB内のIDとPWを照会し、結果を返す。(ここで初めてDBアクセス)OKであれば、HttpSessionがはられます。一度HttpSessionが張られると、ユーザーIDを表示するのにDBアクセスは必要なくなります。httpセッションの中に情報があるからです。HTTPSessionの仕組みについては参考URLをどうぞ。

②クッキーが無ければ(クッキーを受け付けないぶブラウザの場合も同様)、ログインの画面が出てくるので、その後は①のログインが必要な操作〜と同じです。

http://www.atmarkit.co.jp/fsecurity/rensai/webhole03/webhole01.h...

@IT:Webアプリケーションに潜むセキュリティホール(3)

  • id:tiopepe
    デザイン例

    私が同じような仕組みをシンプルに作るとしたらこんなふうにデザイン
    にします。ご参考まで。

    1. 初期状態、ユーザは初めてログインが必要なサイトにアクセスする
    2. サーバはそのユーザに紐づいたSessionがサーバ上に存在するかどう
    かと、以前ログインした時に保存したID情報を含んだCookieを送って
    きているか確認するが、いずれも存在しないのでログインを要求する
    3. ユーザはIDとパスワードを入力する
    4. サーバはIDをパスワードで認証して、OKであればIDを一見して分から
    ないように暗号化してブラウザにCookieとして送信する
    5. ブラウザは送られてきたCookieを保存して、以後そのサイトへアクセ
    スする際には自動でCookieも一緒に送信する
    6. ログイン後、ユーザが初めてページにアクセスする時、サーバは
    Sessionを開始して、認証されたIDをSessionにキャッシュする
    7. ユーザがユーザに紐づいている情報(例えばフルネームなど)を必要と
    するページにアクセスする場合、サーバはSessionにその情報がキャッ
    シュされているか確認して、なければIDを元にDB などから取り出し
    てSessionにキャッシュする
    8. 他のページへ遷移した場合でも、必要なユーザ情報がSessionにあれ
    ば、DBアクセスは発生しない
    9. ユーザがサーバへ一定期間アクセスしないと、そのユーザのSession
    は無効になって、キャッシュしていたユーザ情報はメモリから消滅す

    10. 次のアクセス時には、6に戻る
    11. ユーザがログアウトするか、Cookieをマニュアルで削除するか、
    Cookie自体の生存期間を越えた場合、1に戻る

  • id:niyari123
    上の回答の参考URLをこちらに書かせていただきます。

    参考URL書き忘れていました。
    申し訳ございません。
    遅くなってしまいましたが・・・。
    http://help.yahoo.co.jp/help/jp/edit/edit-10.html

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません