2017-11-06 12 views
0

SSEサーバーのイベント送信の実装には少し新しくなりました。SSE(Server Sent Events)セキュリティの実装

私がしようとしているのは、SSE URLに接続する前にセキュリティチェックを維持することです。 EX-については
私は、クライアントがのEventSourceを通じて、に接続するSSEのURLを持っている:

new EventSource("http://my.example.com/deviceData"); 

そうではなく、すべてのクライアントは、それに接続することができるはずです。私はそれをいくつかのクライアントに制限する必要があります。どうやってやるの?

コードサンプルが本当に役に立ちます。

+0

他のリソースと同じように保護します。それがSSEの美しさです。それはHTTPです。 – baynezy

答えて

0

制限がIPである場合、サーバーサイドスクリプトはヘッダーを見て、それに基づいて拒否できます。 (他のヘッダーに基づいて拒否することもできますが、そのほとんどは偽造されている可能性があります(例えば、ユーザーエージェント)

ログインした後であれば、Cookieを使用する必要があります。最も簡単な方法は、ユーザーを検証してクッキーを返すmy.example.comにログインフォームを作成することです。そのCookieはSSEスクリプトに送信され、その内容を使用してユーザーを検証することができます。 (この方法を使用する場合は、https URLを使用することもできます。ログインフォームとSSEスクリプトの両方がhttpsに設定されていることを確認してください)

+0

しかし私が公開しているSSEのURLは、ログインしなくても使用できます(curlコマンドでSSEをテストしたいと仮定します)。したがって、そのような場合、EventSource APIを使用してデータを投稿することはできません(サポートしていません)ので、どのように検証しますか。 –

+0

curlを使用している場合は、まだ127.0.0.1であってもIPアドレスを持っています。そのようにスクリプトを設定してください。 また、カールを設定してCookieを使用することもできます(例:https://stackoverflow.com/a/31255914/841830) –

関連する問題