¿Es el encabezado Origin realmente útil para asegurar un WebSocket?

3

He estado leyendo algunas publicaciones sobre seguridad de WebSockets, y algunas de ellas mencionan el uso del encabezado Origin para ayudar a asegurar la conexión. Por ejemplo, este enlace .

Sin embargo, tengo muchas dudas sobre los beneficios que brindará. ¿Por qué necesitaría usar el encabezado Origin? O mejor dicho, ¿cómo usaría el encabezado Origin para algo útil?

    
pregunta yzT 25.02.2016 - 10:34
fuente

2 respuestas

6

La verificación del encabezado Origin evita que un sitio web sea utilizado por otro sitio web que el usuario también esté visitando (por ejemplo, para extraer datos).

Según el enlace :

  

Los WebSockets no están restringidos por la política del mismo origen

Esto se debe a que la solicitud de actualización del protocolo tendrá acceso a las cookies del usuario, por lo tanto, si no está verificando el origen, la solicitud podría haberse realizado desde example.com y no desde su sitio example.net .

por ejemplo Si tiene un servicio WebSocket que devuelve algunos datos privados, no desea que se abra un sitio malicioso que el usuario haya leído al leer sus datos porque el usuario ha iniciado sesión.

No tiene nada que ver con impedir que otro sitio web descargue contenido de su sitio web. Si quisieran hacer esto, simplemente establecerían una conexión a su servicio web de socket desde su back-end, donde pueden configurar cualquier encabezado de origen. ellos quieren. Al verificar el encabezado de Origin, esto se detendrá para el contenido autenticado porque no pueden obtener su back-end para proporcionar la cookie de autenticación del usuario a su servicio web.

Por supuesto, podrían registrar un usuario y luego enviar la cookie de autenticación para eso usando su cliente HTTP back-end. Sin embargo, los únicos datos a los que accederían son los suyos, no los del usuario final. Es posible que desee detectar si ciertos nombres de usuario o direcciones IP remotas están reduciendo gran parte de su contenido público para evitar el uso de la funcionalidad en su servicio que puede no ser específica del usuario.

    
respondido por el SilverlightFox 25.02.2016 - 16:13
fuente
1

El encabezado Origin le permite evitar que otro sitio web exponga su servicio websocket a sus usuarios.

Supongamos que crea una aplicación web que consiste en un cliente HTML + Javascript relativamente poco interesante en www.example.net que recibe datos de su servidor mucho más interesante a través de websockets en ws.example.net .

Ahora, alguien más crea un sitio web propio www.example.com que clona su lado html + javascript, pero aún así lo tiene conectado a ws.example.net . Así que se benefician de su servidor backend al hacer que sus usuarios descarguen la capacidad de su servidor y sus datos sin su permiso. No te gusta eso.

¿Qué puedes hacer?

Todas las conexiones de websocket de los usuarios del otro sitio web tendrán Origin:example.com , mientras que las de su propio sitio web tendrán Origin:example.net . Eso le permite aceptar solo las conexiones de sus propios visitantes.

Pero recuerda que el encabezado de origen está configurado por el navegador web. Un usuario podría manipularlo para seguir conectándose a su servicio cuando no esté pasando por su sitio web. Además, alguien podría crear y distribuir una aplicación que no sea de navegador y que se conecte a su servidor websocket con un encabezado de origen falso. La verificación del encabezado de origen solo evita el abuso masivo a través de los infortunados usuarios de Internet que no saben que están utilizando un backend que no deben usar.

    
respondido por el Philipp 25.02.2016 - 11:27
fuente

Lea otras preguntas en las etiquetas