2011-09-29 15 views
11

Sé que viola el Same origin policy, y es por eso que no es posible mediante una simple solicitud ajax. Podría usar JSONP. Pero el uso de JSONP para iniciar sesión no suena seguro (no se obtiene solo publicación).Llamar a HTTPS desde HTTP a través de AJAX para iniciar sesión

¿Existe una manera más segura de implementar el inicio de sesión en https a través de ajax?

+0

Sí, saca 'HTTP' de la ecuación. Si realiza una solicitud 'GET' con origen dentro de' HTTP' es texto claro. De lo contrario, coloque una redirección en el servidor para forzar 'HTTP' a' HTTPS' en la página de inicio de sesión. – Anders

Respuesta

13

No solo infringe el same origin policy, sino que la página a la que llama es insegura y puede interferir y perder todos los datos que intenta mantener seguros.

Utilice HTTPS para todo el proceso.

Mejor aún, siga usando HTTPS mientras las personas inician sesión, de lo contrario, tendrá the Firesheep problem.

+0

Entiendo que arriesgaría eso. Pero dado que ninguno de los contenidos en el sitio web es generado por el usuario, de alguna manera reduce el riesgo de ser interferido. El servicio de inicio de sesión está en HTTPS, y quiero llamarlo desde http – MarutiB

+0

. Tampoco puedo usar https para todas las páginas que iniciaron sesión, es un sitio web multimedia pesado y el efecto https en el caché puede realmente ralentizar mi sitio web. – MarutiB

+0

@Quentin ¿Puede explicarnos cuáles son los riesgos? ¿Cómo se filtrarían los datos? – Dave

1

Como hemos discutido en los comentarios a continuación, esto es lo que Facebook hace por su página de registro, aunque existen algunas vulnerabilidades a este método. Si bien no parece seguro para el usuario (sin icono de candado), la solicitud real se realiza a través de HTTPS. Si controlas la totalidad de la página de recepción, no habría nada menos seguro en hacer una solicitud de JSONP sobre GET. Sin embargo, un ataque man-in-the-middle podría modificar la página de recepción en la carga y hacer que las credenciales devueltas se envíen a un atacante.

Sin embargo, por el lado positivo, nadie que esté oliendo paquetes podrá obtener las credenciales: un ataque debería ser bastante específico.

En cuanto a las cookies, técnicamente, JSONP podría "devolver" las cookies; simplemente devolvería los pares nombre-valor de las cookies que deseaba configurar y tendría una función en la página receptora.

Pero a menos que el navegador trate <script> s de manera diferente, y podría ser así, debería poder establecer una cookie de la manera normal utilizando los Encabezados de respuesta de su respuesta JSONP.

+0

Quiero que sea más fácil para las personas registrarse en mi sitio web. Lo cual nuevamente necesita ser seguro. Entonces, cuando alguien hace clic en registrarse. Puse una ventana emergente para registrar y cuando hace clic en registrar, quería que eso pasara a través de ajax. – MarutiB

+1

@MarutiB En momentos como estos, prefiero 'Me pregunto qué hace Facebook', y resulta que hacen exactamente lo mismo que intentas hacer. Entonces quizás estés bien. Pero sí, JSONP o directamente incluyendo el javascript renderizado desde el sitio https (la misma idea que JSONP) es su única solución. Más sobre las cookies de arriba. – Dave

+0

Lo sé :(Supongo que un pequeño costo a pagar en seguridad para mejorar la experiencia del usuario – MarutiB

Cuestiones relacionadas