2012-01-17 12 views
1

問題は、ポート80とポート8080をリッスンする1つのサーバーを使用し、それぞれのポートがデータベースとWebサイトにマップされる点です。この分離の理由は、技術的な問題によるものです(これらをマージするオプションではありません)。 "データベース"サーバはPHPを処理できますが、PHPは処理できません。異なるポート間のセッションの処理

私たちはPHPスクリプトを使ってセッションを実装しようとしています。ユーザーを保持するデータベースはmySQLデータベースであり、セッションはユーザーのログイン機能用です。 jQueryのAjax関数を使用して、データベース・サーバーでコード化されたログイン・ダイアログ・ボックスを取得します。

データベースサーバのログインダイアログボックスをテストすると、すべてうまくいきます。毎回同じセッションIDを取得します。しかし、Ajaxコールをロードした後にウェブサイトサーバー上で使用しようとすると、リクエストごとに(つまり、何かを行うたびに)新しいセッションIDが返されます。セッションIDを「アクティブセッション」にリンクさせることができないため(私が望むほど良いとは言えない)セッションを使用することができません。

ここで何が起きるのかは確かではありませんが、データベースサーバーは各要求を「新しいユーザー」とみなしていると考えられます。意味がありますか?

この問題をどうやって解決できますか?

事前に感謝! :-)

追記:はい、私たちはセッションを開始している:それは、関連するのですが、我々はそれについて尋ねる話題をたくさん見てきた わかりません! :-)

+0

ウェブサーバーには、送信されたものだけが表示されます。クッキーを送り返すかどうかを決めるブラウザです。どういうわけか、Webサーバー環境が2つの異なるCookieドメインであり、セッションCookieを戻していないと判断しています。 –

+0

@MarcBさて、これを回避する方法はありますか? Ajaxコールでデータベースサーバーに送信できるものはありますか? – pecka85

答えて

0

Pecka、あなたが正しくあなたを理解していれば、すべての認証が「データベースサーバー」で正しく行われていますか?そうであれば、AJAX呼び出しは、データベースサーバの応答のみを返すのであって、セッションを追跡するために通常使用するクッキーは返しません。

AJAXコール中に交換されたHTTPヘッダーを確認することで、ダブルチェックしますが、「データベースサーバー」から返される可視コンテンツのみを取得していると思います。

ヘッダーをチェックアウトするには、FirefoxのようにLive Headersアドオンを使用できます。 https://addons.mozilla.org/en-US/firefox/addon/live-http-headers/

私が私の理解を忘れてしまった場合は、投稿し直してみてください。 1、私は理解してるものを、私はあなたの問題を解決する方法のように、1つの提案を行うことができますが、私は安全保障への影響について野生ではないんだと言ってしている場合、それを前置きますベース


Pecka、それは私だった、私はPHPを使用するWebサーバーを取得に取り組んでいた。

if([ENTER CRITERIA FOR CHECKING LOGIN HERE ]) { 
    $hashSalt = 'PleasePr0tectM3'; 
    $token = md5($_POST['username' .date('mdY') .$hashSalt); 
    echo $token; 
} 

それは終わり基づいているウェブサーバはまた、それを計算することができるものである必要があります:それは

あなたはそれが応答は、このようなものだで、データベース・サーバが戻って暗号化されたトークンを渡すことができます...言われています与えられた入力に対してのみ。 Webサーバーは同じハッシュを作成し、一致する場合はWebサーバーにセッション資格情報を発行させます。

醜いですが、うまくいくかもしれません。

私に知らせてください。 :)

+0

あなたは正しいようです! :-)私がログオンしようとすると(そのコードはデータベースサーバー上にあります)、私はデータベースサーバーからの応答のみを取得します。 Webサイトとログインボックスのコードを含むWebページを入力すると、1)ページからの「通常の」応答、2)ログインボックスを取得するためのAjax呼び出しからの応答、および3)jQueryからのもの(関連性がなく、ライブラリのみを取得する)これをどうすればできますか?編集:1)と2)別のIDを持って – pecka85

+0

私はシナリオについては不明であったかもしれないことがわかります。正しいのは、ウェブサイト(ウェブサイトサーバー)とログインボックス(データベースサーバー)の要素を含むサイトに入ると、上記の3つの回答が得られるということです。私が「ログイン」をクリックすると、データベースサーバ上のPHPスクリプトにリクエストが送られ、データベースサーバからのヘッダが1つだけ取得されます。 – pecka85

+0

プロジェクトに関するいくつかの話し合いの後、私たちはユーザをウェブサイト - サーバに移すことに決めました。これは以前に実行可能なようなものではなかったようですが、おそらく今の方法を見つけたでしょう。あなたが指摘したように、ユーザー名のハッシングなどを使用するセキュリティリスクがある可能性があるので、この他の方法はセキュリティを確保するのに役立ちます。助けと洞察に感謝します! :-) – pecka85

関連する問題