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?
Antwort
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.
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
@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) –
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
- 1. Wie schränke ich den Zugriff auf bestimmte Seiten in ASP.NET MVC ein?
- 2. Wie schränke ich den Zugriff auf Dateien mit bestimmten Erweiterungen in ASP.NET ein?
- 3. Wie schränke ich den Zugriff auf mein aws s3-Objekt für mein Site-Konto ein?
- 4. Wie schränke ich eine Vorlagenklasse auf bestimmte integrierte Typen ein?
- 5. Wie schränke ich den Zugang zum Kubernetes-Service ein?
- 6. Wie schränke ich den Zugang zu meinem Webservice ein?
- 7. Wie schränke ich OrbitControl ein - Three.js
- 8. Wie schränke ich die SciPy-Kurvenanpassung ein?
- 9. MS Access: Wie schränke ich eine Tabelle in der Größe ein?
- 10. Zugriff auf nodejs Cookies in angularjs
- 11. NodeJs: Zugriff auf eine Variable des Controllers in Javascript
- 12. PHP - Wie kann ich den Zugriff auf eine Seite beschränken?
- 13. Wie schränke ich in C den Bereich einer globalen Variablen auf die Datei ein, in der er deklariert ist?
- 14. Bietet TypeScript eine explizite öffentliche API für den Zugriff auf den NodeJS-Modul?
- 15. Zugriff auf bestimmtes Verzeichnis in NodeJS auszudrücken
- 16. Den Zugriff auf den Ordner verweigern, aber den Zugriff auf eine Datei in diesem Ordner zulassen
- 17. Wie halte ich eine Sitzung auf Betfair in Nodejs
- 18. nodeJs - Zugriff auf erforderliche Eigenschaften nicht möglich
- 19. NodeJS Supertest Zugriff auf Session-Objekt
- 20. Zugriff auf MDB-Dateien durch NodeJS
- 21. Wie erstelle ich ein einfaches Windows-Formular für den Zugriff auf eine SQL Server-Datenbank?
- 22. Zugriff auf Google Analytics über nodejs
- 23. NodeJS Infinispan Cache-Zugriff
- 24. Wie Zugriff auf den Ordner in asp.net
- 25. Nodejs: Wie kann ich eine Anfrage senden?
- 26. Wie ändere ich den Standardautor für den Zugriff auf ein lokales SVN-Repository?
- 27. Wie schränke ich IP-Block-Bereich-Verwendung von Htaccess?
- 28. Wie kann ich den Zugriff auf SOAP-Antwort erhalten
- 29. Wie führe ich Redirects in NodeJS wie eine .htaccess-Datei?
- 30. Code-Verschleierung für den Zugriff auf ein Array in C++
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? –
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