Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/01/2015, 14:50
Avatar de Djoaq
Djoaq
 
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 7 años, 4 meses
Puntos: 38
Respuesta: Node , Socket.io protection

En mi opinión no afecta a node el tema del browser o del js que le lances al cliente.

Siempre estará expuesto el Javascript del cliente.

Hace poco hicimos un proyecto con esta tecnología y en mi opinión ,

Deberías controlar al máximo todas los usuarios que usan el sistema.

Una forma de controlarlo sería identificar y guardar en una matriz los clientes que te realizan previamente una petición por http , podrías recoger el user agent , la ip , el socket hash( si lo estas combinando con apache y php puedes pasar el id de session y añades también la session )

Luego una vez bien identificados a que socket's tienes asociados.

1 evitar sniffing es decir mantener la paridad de 1 hash ws->ip->UA->sessionID
Cada vez que entre un nuevo usuario comprobar esta relación , es decir si existe la misma ip o la misma Session con otro socket... denegar el servicio! algo raro esta pasando.

2 Todas las operaciones que realices desde node con sockets debes comprobar la veracidad y coherencia de esos datos a nivel lógico .

Por ejemplo si tu aplicación es un juego de futbol y los goles son de 1 en 1 compurebas el último valor y la diferencia respecto al nuevo valor que te envía debe ser 1 .. es decir que si yo en js en mi navegador hago var goles = 10 ; tu detectes que no es coherente y omitas la acción y a ese user ( o lo extraigas de alguna matriz de jugadores ).

En tu caso podrías incluso se me ocurre que jueges con la diferencia entre emit y emit de un usuario , de manera que cada vez que un user te envíe algo le hagas en el server una marca de tiempo ,redondeando esa cifra podrías comprobar si los envios tienen un intervalo de tiempo muy muy corto durante 4 envios si por ejemplo los 4 últimos envíos fueron constantes en el tiempo , es decir cada N ms y si es así sabes que ese usuario esta haciendote flood o saturandote el canal , si lo tienes bien identificado lo expulsas de tu matriz de usuarios activos en tu sistema.

No soy un experto en Node pero yo al menos personalmente intentaría plantearlo así.

Un saludo!

Última edición por Djoaq; 08/01/2015 a las 15:04