2009-02-05 18 views
6

Tengo un sitio web alojado en un proveedor que no me da una dirección IP fija, así que no puedo usar https. Me gustaría editar algunas páginas utilizando un formulario web pero de forma segura.¿Es posible tener un formulario web seguro sin un servidor https?

El cliente sería un dispositivo de tipo iphone, por lo que un applet de java o flash estaría fuera de cuestión.

  • ¿Hay alguna manera de mantener una conexión segura entre el servidor y el navegador usando solo javascript en el navegador?

El idioma en el servidor es actualmente php pero podría ser ruby, python, perl o lua.

+0

No creo que tener una dirección fija tenga algo que ver con tener https disponible ... AFAIK todo lo que necesita es que el proveedor brinde un certificado SSL y escuche en el puerto 443 –

+0

¿Qué quiere decir con seguridad? –

Respuesta

1

Yo diría que la respuesta es no. La razón es que sin https, todo el tráfico es texto sin cifrar. Por lo tanto, cualquier algoritmo de cifrado o intercambio de claves en el lado del cliente sería legible por cualquier persona. Aunque podría estar equivocado ... nunca lo intenté.

+0

Bueno, el intercambio de claves tiene que funcionar sin cifrar, independientemente del protocolo ...? –

0

¿Cómo es posible usar Javascript? Para que el navegador ejecute el javascript, primero debe descargarlo del servidor inseguro (previamente indicado). HTTPS es un protocolo de servidor/cliente, por lo que si no puede implementarlo con el servidor, no podrá implementarlo en absoluto.

Todo lo que necesita para HTTPS es una sola dirección IP, por lo que no importaría si cambiara. Debería poder usar HTTPS con una dirección IP dinámica, pero es posible que necesite hablar con su proveedor de servicios de Internet. Si su hosting está en un servidor compartido, entonces no funcionará y necesitará una IP dedicada. No son tan caros, ¿entonces quizás debería pagar los $ 3/4 por mes?

Alex

+0

Tienes razón. Si depende de descargar el JS de un servidor inseguro, ya está jodido, porque el JS podría cambiarse en el camino, ser malicioso y simplemente enviar los datos sin cifrar a otro lugar. La misma razón por la cual la publicación insegura de la página a la página segura no es segura. – Kibbee

3

En teoría podría implementar algún tipo de comunicación segura entre el cliente y el servidor utilizando Javascript y XmlHttpRequests. En la práctica, parece mucho trabajo y las posibilidades de que sea rápido y verdaderamente seguro parecen bajas.

Como dice Alex anteriormente, incluso si lograra implementar en JS, igual tendría que entregar el JS al cliente a través de una conexión insegura, por lo tanto, no tiene sentido.

embargo, las cosas más locas han sido implementados en Javascript antes ...

12

Instalación de un certificado SSL no requiere técnicamente una dirección IP fija - el certificado SSL está ligado al nombre de host (nombre común). A menudo cambiamos las direcciones IP en nuestros hosts y nunca cambiamos nada relacionado con los certificados.

Dicho esto, de hecho, puedes usar JavaScript o similar, pero en realidad no es una buena solución, siempre olerá a hack.

5

Se podría utilizar algún tipo de public key encryption implemented in javascript:

  • Das lado del cliente la forma, su clave pública, y una biblioteca de cifrado js
  • En la presentación, patadas js en una encripta la forma de carga útil
  • a descifrar con su clave privada

el impediría cualquier persona de oler su información sensible en el alambre, pero no proporciona ninguna protección contra una la mitad-hombre-en dle ataque. SSL hace que ese ataque sea un poco más complicado de lograr, pero no imposible.

+0

¿Cómo se puede evitar olfatear datos confidenciales en el cable, pero no un ataque MITM? ¿No son uno y lo mismo? – Kibbee

+0

No, en realidad, una transmisión no encriptada no necesita un ataque MITM para leerlo después de todo. Eso sí, no es como si SSL proporcionara mucha más mitigación de MITM, pero es un poco más difícil. –

1

Es teóricamente posible, siempre que pueda controlar el cliente y (por ejemplo) tenga javascript de confianza allí que no se descargue del servidor. Podría elaborar, pero cualquier cosa en estas líneas es un PITA y un error propenso en comparación con el uso de https.

Además, no debería ser necesario tener una IP fija: ¿tiene un nombre de dominio?

+0

En el caso de iPhone mencionado en la pregunta, no es posible confiar en Javascript que no se descargó del servidor. – andynormancx

+0

Sí, si es una aplicación web, pero no queda claro si una aplicación nativa es una opción. De lo contrario, lo que el OP quiere hacer no es posible a menos que los ataques activos no sean una preocupación. – frankodwyer

4

No en el sentido tradicional, no, pero hay algunas opciones:

  1. obtener mejores de alojamiento. Podría tener a VPS with a fixed IP por $ 20/mes. Certificado por $ 30 al año. Bastante barato para las personas que necesitan la seguridad.

  2. Puede encriptar los datos del formulario using javascript and PGP. Esto es barato (y se lo verá a sus usuarios) pero debe mantener sus datos lo suficientemente seguros.

  3. Puede haber terceros que permitan el envío de formularios a través de sus servidores (y por extensión) sus certificados. Sin embargo, usted y sus usuarios deberían confiar en que no abusarán de los datos.

+0

+1. Obtener un mejor proveedor de hosting es probablemente la mejor opción. ¿Qué tipo de proveedor de alojamiento malicioso no admite IP fijas y certificados SSL? – Kibbee

+0

No todo el mundo tiene dinero para comprar IP estáticas o certificaciones SSL. (auto-firmado todavía provoca una ventana emergente en los navegadores que parecen un error al enviar un formulario por diseño). – Sukima

0

SSL funciona con el nombre de dominio, no una dirección IP. Siempre que tenga y tenga un nombre de dominio, y tenga un proveedor dispuesto a abrir el puerto 443 e instalar el certificado que compre para su sitio, puede hacer HTTPS.

Dicho esto, suponiendo que no puede hacerlo, mira en SRP:

Desde el sitio:. "SRP es un protocolo de autenticación basada en contraseñas y de intercambio de claves seguras Resuelve el problema de clientes que se autentican a los servidores de forma segura ... Además, SRP intercambia un secreto criptográficamente fuerte como un subproducto de la autenticación exitosa, que permite a las dos partes comunicarse de forma segura ".

Tienen un ejemplo de Javascript. Utilizarías el subproducto para encriptar los datos a través del cable.

Sin embargo, como la mayoría de los carteles, es mejor que se mude a un nuevo proveedor.

0

Son casi dos años más tarde, pero ahora hay una implementación de SSL/TLS de código abierto en JavaScript. Sin embargo, actualmente se basa en Flash para proporcionar acceso de socket bruto ... así que, a menos que la aplicación se ejecute en un teléfono Android en lugar de un iPhone, puede que no sea tan útil.

http://github.com/digitalbazaar/forge/blob/master/README

0

Sí. Puede usar un formulario incrustado, utilizando el cifrado PGP, desde Private Forms.

Private Forms es SaaS que encripta los datos del formulario web del lado del cliente antes de enviar los datos al servidor. Entonces, estos datos cifrados se envían a usted. Todos los datos se cifran utilizando su clave pública PGP, que solo usted puede descifrar utilizando su clave privada PGP.

Entonces, la persona que llena los formularios sabe que es "seguro", pero no necesitan estar familiarizados con los detalles (como generar claves, etc.).

Cuestiones relacionadas