2011-09-16 8 views
10

Zastanawiam się, jak mogę zabezpieczyć moje połączenie socket.io z serwerem od th th.Problemy bezpieczeństwa Socket.io

Kwestie bezpieczeństwa:

  • Co zatrzyma złośliwym użytkownikom łączenia się z serwerem za pośrednictwem gniazda kodu po stronie klienta?

Przykład:

OUTSIDE DOMAIN REQUEST var socket = io.connect('http://Mydomain', {port: 4000}); 
  • Użytkownicy mogą pozornie stworzyć tysiące jednoczesnych połączeń tylko poprzez otwarcie innego okna przeglądarki.

Jak mogę zapobiec tym problemom?

+0

spojrzenie na https://github.com/LearnBoost/socket.io/wiki/Authorizing i sprawdzić adres użytkownika (IP) i żądanie nagłówka poprzez socket.handshake lub globalne autoryzowanie –

Odpowiedz

5

Powinieneś być w stanie sprawdzić serveride, czy odwołanie HTTP jest poprawne. Sprawdź specyfikację socket.io, aby uzyskać informacje zarówno o poleceniach http, jak i uzgadnianiu.

https://github.com/socketio/socket.io-protocol

0.8 ma także weryfikację odsyłających. Miałaś używał go wcześniej, ale to może być miejscem do rozpoczęcia poszukiwań:

https://github.com/LearnBoost/socket.io/pull/481

+0

Dzięki, ale co jeśli jest wiele połączeń od tego samego użytkownika? – Trevor

0

Cóż, jeśli twoi (prawdziwi) klienci pochodzą z dobrze znanej lokalizacji, prawdopodobnie zechcesz zablokować wszystkich na poziomie zapory. Zakładając, że twoja usługa jest dostępna dla wszystkich, prawdopodobnie możesz zajrzeć do mechanizmu uzgadniania klienta z serwerem.