2012-04-02 7 views
0

Ich verstehe Routing (denke ich), aber was zu stoppen Benutzer A von Client-seitige Quelle von Benutzer B, um die socket.io URL spezifisch für jeden Benutzer zu entdecken und dann ein eigenes Skript erstellen, um für Broadcast-Nachrichten auf diesem zu hören beginnen bestimmter Kanal?Wie schränke ich den Zugriff auf eine Broadcast-Nachricht in NodeJS ein?

+0

Wie sehen sie die clientseitige Quelle von Benutzer B aus? Wäre es nicht erforderlich, entweder physischen Zugriff auf diesen Computer zu haben oder den Computer so kompromittiert zu haben, dass er Webanfragen nach der SSL-Entschlüsselung anzeigen kann? An diesem Punkt wird der Benutzer effektiv abgespritzt und es gibt wirklich keine Möglichkeit für Sie, sich dagegen auf der Serverseite zu schützen. Selbst Cookies, wie sie von Jani erwähnt werden, sind eine kleine Unannehmlichkeit, da Benutzer A auch Zugang zu diesen Cookies haben könnte. Habe ich etwas in der Frage falsch verstanden? –

+0

Nein, Sie sind genau richtig. Ich wollte nur sicherstellen, dass ich nicht etwas vermisse, das der Sicherheit von socket.ios Kommunikation innewohnt, um es sicherer zu machen. – EvilJordan

Antwort

0

Sie müssten etwas verwenden, um festzustellen, wer der Kunde ist. Sobald Sie dies getan haben, können Sie beispielsweise die Funktion "Räume" verwenden und nur in den Raum senden, in den Sie alle Ihre autorisierten Benutzer gestellt haben.

Um den Client zu identifizieren, könnten Sie in einer socket.io-Anfrage Cookies vom Browser übergeben und diese mit den Sitzungsdaten vergleichen, die Sie in Express/Connect/Whatever gespeichert haben.

+0

Dies ist eigentlich ein großartiger Artikel über den Prozess im Allgemeinen, für alle, die nach ähnlichen Informationen suchen: https://github.com/LearnBoost/socket.io/wiki/Authorizing – EvilJordan

+0

@EvilJordan Ich denke, es würde ein bisschen knifflig werden. Der Sitzungsspeicher bringt bereits einen Cookie zu dem Client, der bereits ziemlich genau für diesen Zweck verwendet wird (um zu identifizieren, wer der Client ist, so dass wir wissen, welche Sitzungsdaten zur Verfügung zu stellen sind) –

+0

zugestimmt. Es sieht wie die traditionelle externe Benutzerauthentifizierung aus und dann sind Namespaces der richtige Weg. Was mich zu einer anderen Frage führt, die ich bald eröffnen werde! – EvilJordan

Verwandte Themen