2012-03-12 26 views
0

私は入札の前にログインする必要があるオークションWebサイトを開発しています。 ウェブサイトはPHPで実現され、メインデータ(ユーザー、オークションなど)はmysqlに保存されます。 リアルタイムシステムを実現するために、node.jsを使用してwebsocket(私はsocket.ioを使用しました)を開発しました。ここで私はredisからデータを取得します。ユーザがログに記録されている場合、PHPで制御するのはもちろん簡単ですが、ログインしたユーザがnodejでもリクエストを行った場合、私のシステムが制御していることを確認します。どうすればいいですか?ソケットリクエストごとにユーザーデータを渡すことはわかりません。これは、ユーザーが存在するかどうかを確認するためにmysqlにクエリを行うたびに(実際には良い方法ではありません)、システムが遅くなると思います。いくつかのアイデアはありますか?セキュリティwebsocketとnodejs phpとmysql

答えて

0

新しい接続を作成した後でユーザーを一度認証する必要があります。そのような接続後に許可のクッキーを送信します。クッキーをチェックした後、現在の接続をユーザーにバインドすることができます。セキュリティを強化するために、クライアントに応答して、IPアドレスに依存する小さなランダムキーを送信することができます。このキーはリクエストごとに送信されます。チェックアウトするために追加のmysqlリクエストを行う必要はありません。

+0

しかし、クッキーは異なるポートで動作しますか?私はhttp://www.example.com/の下にウェブサイトを持ち、http://www.example.com:8888の下にwebsocketを持っているので、最初からクッキーを捕まえるためにnodejsを使っているのですか?通常はクッキーによる認証はあまり安全ではありませんか? –

+0

javascriptで認証クッキーを取得するには、document.cookieを使用し、最初に直接socket.ioメッセージを送信します。 –