2011-06-15 25 views
11

Estoy trabajando en una aplicación de análisis en tiempo real y estoy usando websockets (a través de la biblioteca socket.io) junto con nodejs. No se enviarán datos "confidenciales" a través de los websockets (como nombres, direcciones, etc.). Solo se usará para realizar un seguimiento de las visitas y hacer un seguimiento del total de visitantes (junto con el número de visitantes en las 10 URL más visitadas).Websockets, socket.io, nodejs y seguridad

¿Hay algún problema de seguridad que deba tener en cuenta? ¿Me estoy abriendo a:

  1. Ataques DoS?
  2. ¿Ataques XSS?
  3. ¿Agujeros de seguridad adicionales que podrían usarse para obtener acceso a la LAN del servidor web/servidor web?
  4. ¿Algo más que no mencioné aquí?

¡Gracias!

Respuesta

9

1. DoS attacks?

Usted se está abriendo contra los ataques de denegación de servicio y si se hacen correctamente no hay casi nada se puede hacer contra este tipo de ataques.

2. XSS attacks?

Si No filtrar que son vulnerables a los ataques XSS. Creo que podría protegerse contra esta usando algo parecido a this:

/** 
* Escape the given string of `html`. 
* 
* @param {String} html 
* @return {String} 
* @api private 
*/ 

function escape(html){ 
    return String(html) 
    .replace(/&(?!\w+;)/g, '&') 
    .replace(/</g, '&lt;') 
    .replace(/>/g, '&gt;') 
    .replace(/"/g, '&quot;'); 
} 
3. Additional security holes that could be used to gain access to the 
webserver/webserver's LAN? 

Usted debe protegerse contra los ataques de la LAN por medio de un firewall?

4. Anything else I didn't mention here?

  • Si va a enviar información sensible que debe enviado a través de SSL por lo menos. También debería proponer algún tipo de esquema de autenticación ...
  • ¿Tal vez podría ser vulnerable a la fijación de la sesión?
+1

Gracias por su comentario. ¿Puedo preguntarme exactamente cómo me abriría a los ataques DoS? Sé que son posibles en muchas situaciones, solo me preocupa el riesgo adicional que presenta el uso de websockets. Afortunadamente, solo enviaré datos de seguimiento al cuarto (tal vez un número o algún tipo de contador dinámico ... aún no lo he pensado), así que no creo que tenga que filtrar cosas. Además, no habrá forma de que los usuarios ingresen datos en el websocket. El websocket solo se usa cuando un usuario carga una página (para rastrear). – Aaron

+2

Cuando un ataque dos se ejecuta perfectamente, por ejemplo, con un botnet muy grande, no hay casi nada que puedas hacer para contrarrestarlo. Incluso en sitios grandes como por ejemplo (creo que los golpearon) PayPal, amazone no puede hacer nada en contra de esto. No estoy seguro de si hay algún riesgo adicional. Si la salida (enviada a los navegadores) no proviene de los usuarios (asegúrese de descartar todas las entradas de los usuarios), estará a salvo de los ataques XSS. – Alfred

+0

Gracias una vez más por sus valiosos comentarios :) – Aaron