2010-11-29 12 views
32

Varios expertos en seguridad han dicho en el pasado que la página de inicio de sesión debe estar en ssl https. Entonces, ¿qué ocurre si mi inicio de sesión es un bloque que se muestra en todas las páginas? ¿Eso significa que mi sitio web completo debe ser https?Los inicios de sesión deben ser una página https

He leído que es posible poner el formulario en http pero publicarlo en https, pero leí a alguien diciendo que puede ser explotado con un hombre en el ataque medio. Puede alguien confirmar esto? Tengo una recompensa de 100 puntos para alguien que pueda confirmar esto (y me ayude con una respuesta práctica sobre cómo resolver esto de manera segura). Mi formulario de inicio de sesión está en cada página, ¿necesito hacer todo el sitio web en https? Por favor, siéntete libre de preguntar cualquier cosa que haya dicho aquí. Son solo cosas que leo pero no tengo experiencia y no las probé yo mismo.

Editar sección: a los que preguntaron, cuando estaba publicando la pregunta, traté de establecer la recompensa, pero el sistema no me dejaba. Revisé las Preguntas frecuentes y vi que la recompensa se puede publicar después de 2 días desde la publicación de la pregunta. Es por eso que aún no ves recompensas. Pero no seleccionaré una respuesta hasta que establezca una recompensa en 2 días. Perdón por cualquier confusión.

+7

No veo la recompensa de 75 puntos. – Reinderien

+0

La pregunta tiene 6 minutos de antigüedad, todavía no se puede agregar una recompensa (y es prematuro ofrecer una). – Quentin

+1

Todos sabemos la respuesta, pero su anuncio de generosidad nos impide contestar :) – Michael

Respuesta

30

He leído que es posible poner el formulario en http pero publicarlo en https, pero leí a alguien diciendo que puede ser explotado con un hombre en el ataque medio. Puede alguien confirmar esto?

Sí. El formulario se sirve a través de HTTP, por lo que un hombre en el medio podría inyectarle cambios (por ejemplo, envía credenciales a su propio servidor antes de enviar el formulario).

una respuesta práctica cómo resolver de forma segura este

Si la seguridad que realmente importa - el uso de HTTPS para todo el sitio. Incluso después de que se haya enviado la contraseña, si vuelve a HTTP, la cookie puede ser robada (consulte Firesheep)

Si la seguridad no es tan importante, no coloque el formulario de inicio de sesión en cada página. Solo tiene un enlace a una página de inicio de sesión.

+0

Hubo otra respuesta aquí hace aproximadamente una hora, pero creo que el propietario la eliminó por el voto negativo. Él estaba diciendo que Facebook usa http para la página principal, pero publica el formulario en https como lo hice en la pregunta. Revisé su código y de hecho lo hacen 'https: // login.facebook.com/login.php' Entonces ... ¿hay algo que nos falta, o están haciendo una llamada incorrecta aquí? Me pregunto porque Facebook son grandes perros, ¿deberían saber esto si es realmente inseguro? ¿Algún comentario? – sami

+11

Facebook está haciendo una llamada incorrecta (lo cual no es raro para ellos con algo relacionado con la seguridad o la privacidad). Firesheep (vinculado en la respuesta) demuestra un defecto en su seguridad después de la sección SSL, pero la sección previa a SSL también es vulnerable. – Quentin

+0

Las cuentas de Facebook se ven comprometidas regularmente, pero no hacen nada al respecto. Sin embargo, usar HTTPS para todo el tráfico probablemente paralizaría su infraestructura. – cspolton

3

Si quiere que sus datos sean seguros, debe usar SSL (certificado) en todo su sitio. Pero no necesita tener SSL para mantener sus contraseñas seguras. Por ejemplo, podría usar openID, facebook connect, twitter login para manejar esta parte por usted. De esta forma, nunca se envían contraseñas a través del cable en texto sin formato.

+0

Usar OpenID es realmente una solución elegante, gracias por compartir este – milovanderlinden

7

Respuesta simple "Sí" a su página de registro y resto de los sitios web deben ser servidos a través de SSL

Y aquí es por ello que desde FAQ implementación de SSL:

+0

+1 para explicar por qué todo debe ser SSL – sleske

+2

Decir que todo debe ser SSL es como decir que todo el mundo debería usar Linux, Firefox como navegador web y automóviles fabricados en Rusia. ... la creación de aplicaciones web y sitios se trata de compromisos, y me gustaría la mejor manera de proteger mi aplicación Y asegurar las credenciales de acceso de los usuarios. Pero todavía no puedo obtener la respuesta a eso. – milovanderlinden

+0

Di más esta respuesta. Los enlaces explican mucho, lo único que no me gusta es que la mayoría de las respuestas son "no, no deberías" o "no, no puedes". Me encantaría tener más soluciones y menos bloqueadores. – milovanderlinden

0

He leído que es posible poner el formulario en http pero publicarlo en https, pero lee a alguien diciendo que puede ser explotado con un hombre en el ataque medio.

No. El objetivo del <form> es una nueva llamada realizada por el navegador en uso.

Si la URL http://example.com/ ha sido visitado y el contenido de la página ha sido dictada por el navegador, la conexión no segura está cerrada (sí. Es puede se mantiene abierta [mantenimiento de conexiones]. Sin embargo, la solicitud de que el URL es terminado).

Para objetivo de inicio de sesión del sitio https://example.com/ un SSL-sesión será negociado entre el servidor y el cliente utilizando un puerto diferente del servidor (generalmente 443) y no hay datos de la página anterior (excepto tal vez "Referer") se utiliza/transmite después se ha establecido la conexión segura.

He leído que es posible poner el formulario en http pero publicarlo en https, pero leí a alguien diciendo que puede ser explotado con un hombre en el ataque medio. Puede alguien confirmar esto?

Sí. El formulario se sirve a través de HTTP, por lo que un hombre en el medio podría inyectarle cambios (por ejemplo, envía credenciales a su propio servidor antes de enviar el formulario).

En un sitio comprometido no importa, si el contenido se sirve asegurado o no. Los contenidos de un sitio se pueden entregar a través de SSL, pero el código aún puede verse comprometido.

Además, las cookies pueden ser robadas. Pero solo son texto. Es lo que su sitio hace con ese "texto" es lo que es importante. Si confía en lo que un "navegador" le dice a sus scripts, su aplicación no es segura. Utilice la validación de cookies (basada en IP, basada en navegador, cualquiera que sea su base) para que las cookies no puedan ser "robadas".

Use sitios seguros de SSL cada vez que los usuarios envíen datos, es decir que vale la pena proteger. Comentar una publicación en un blog no es algo que enfatice mi servidor al establecer una conexión SSL para ...

+0

En un ataque "man-in-the-middle", el sitio no se ha visto comprometido. La conexión entre el cliente y el servidor tiene. SSL protege contra el código que se ve comprometido, ya que proporciona autenticación y encriptación. SSL protege contra el robo de cookies ya que proporciona cifrado. – Quentin

+0

De acuerdo. Sin embargo, DNS spoofing puede comprometer un sitio y funciona a través de SSL también. –

+1

¿Cómo obtendrá spoofer un certificado SSL para el nombre de host que se redirecciona que está firmado por una autoridad en la que confía el navegador? – Quentin

0

Incluso si trataste de poner el bloque de inicio de sesión en un iframe que usa https, un hombre en el medio El ataque puede cambiar el src de ese iframe fácilmente, por lo que puede hacer de loginbox un enlace de inicio de sesión (con https login page) o necesitará más recursos para ejecutar su sitio web con ssl para todas las páginas web que tengan el recuadro de inicio de sesión ...

+0

SI permitimos que MITM cambie el atributo src a un iframe de su elección, ¿por qué no puede cambiar el href en el enlace de inicio de sesión? –

+0

es posible que vea algunos sitios que le advierten que "asegúrese de que la URL comience con https", por lo que al menos los usuarios (que siguen las instrucciones) pueden ver la URL https en su barra de direcciones, mientras que no pueden conocer el iframe si estaba bajo ssl o no! . y para aquellos que no lo notaron, es su error ... –

4

Bueno, si no usa SSL para inicios de sesión, la contraseña del usuario puede revelarse a cualquiera que tenga medios para escuchar la comunicación entre el cliente y el servidor (básicamente leyendo el flujo de datos). (Lo cual no es bueno ^^)

Como dice el anterior goreSplatter, puede establecer fácilmente el destino del formulario en un punto final seguro (es decir, https://site.com/login) y se usará una conexión segura para enviar las credenciales del usuario y recibir respuesta.

La mayoría de los sitios web continúan comunicándose a través de HTTP básico, que "solo" expone a sus usuarios a los riesgos del secuestro de sesión (man-in-the-middle lee su identificador de sesión/signature/nonce/whatever y luego pretende ser el cliente autenticado, por lo tanto, si tiene éxito, puede manipular los recursos protegidos del cliente, pero este método no permite "robar la cuenta completa"). Esto generalmente se considera una amenaza menor y debido a la sobrecarga asociada con la comunicación SSL, la conexión segura para todas las solicitudes se usa solo en aplicaciones críticas (banca en línea, por ejemplo).

Finalmente, para responder a su pregunta: No, solo las transferencias a las que se envían datos confidenciales deben estar necesariamente aseguradas.

+1

El problema con este enfoque es que secuestrar una sesión es en muchos aspectos lo mismo que "robar la cuenta completa" ... – sleske

1

¿Tiene la opción de rediseñar el concepto de UI?La idea: tener una IU de inicio de sesión informativa en cada página, pero no el control de inicio de sesión real. Su nuevo control información enumeraría:

  1. Logged In As <user_name> o Not Logged In
  2. Login o Logout enlace dependiendo del estado

Los enlaces se mostrará una ventana de acceso a la página cuyos contenidos están asegurados en su totalidad.

Este enfoque lo acercaría a lo que ya tiene (algunas funcionalidades de inicio de sesión en cada página) pero enrutado/en capas de manera que su autenticación esté completamente segura a través de SSL.

1

Por ejemplo, GMAIL tiene una opción en la configuración donde puede habilitar SSL. Facebook, Twitter y todos los medios sociales no tienen SSL o no están habilitados.

Creo que si realmente quiere que la seguridad de su sitio web sea maliciosa (bot o no) mejor, use SSL. (sin embargo, si SSL está habilitado, existe el riesgo de secuestro). De lo contrario, puede probar con un código duro js para ocultar los datos del formulario.

¡Buenas respuestas arriba, más todo y obtén tu propia idea sobre el asunto!

Buena suerte.

Cuestiones relacionadas