php - usar - ¿Es posible tener un formulario web seguro sin un servidor https?
pasar variable php a html (10)
Tengo un sitio web alojado en un proveedor que no me proporciona 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.
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.
¿Cómo sería 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
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.
Sin embargo, como dice Alex anteriormente, incluso si lograras implementarlo en JS, igual tendrías que enviar el JS al cliente por una conexión insegura, por lo tanto, sería bastante inútil.
Aún así, cosas más locas se han implementado en Javascript antes ...
Es teóricamente posible, siempre que pueda controlar al cliente y (por ejemplo) tenga allí javascript de confianza 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?
La instalación de un certificado SSL técnicamente no requiere una dirección IP fija: el certificado SSL está vinculado 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, puedes usar JavaScript o algo por el estilo, pero en realidad no es una buena solución, siempre olerá como un truco.
No en el sentido tradicional, no, pero hay algunas opciones:
Obtenga un mejor hosting. Podría tener un VPS con una IP fija por $ 20 / mes. Certificado por $ 30 al año. Bastante barato para las personas que necesitan la seguridad.
Puede encriptar los datos del formulario usando javascript y PGP . Esto es barato (y lo verán sus usuarios), pero debe mantener sus datos lo suficientemente seguros.
Puede haber terceros que permitan la presentación 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.
Puede usar alguna forma de encriptación de clave pública implementada en javascript :
- Le da al cliente el formulario, su clave pública y una biblioteca de cifrado js
- En el envío, js inicia una encriptación de la forma payload
- Usted descifra con su clave privada
Evitaría que alguien olfatee su información confidencial en el cable, pero no proporciona ninguna protección contra un ataque de hombre en el medio. SSL hace que ese ataque sea un poco más complicado de lograr, pero no imposible.
SSL funciona con el nombre de dominio, no con 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, asumiendo que no puede hacerlo, investigue sobre SRP :
Desde el sitio: "SRP es una autenticación segura basada en contraseñas y un protocolo de intercambio de claves. Resuelve el problema de autenticación de clientes a 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, probablemente sería mejor mudarse a un nuevo proveedor.
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é.
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.
Sí. Puede usar un formulario incrustado, utilizando el cifrado PGP, desde Formularios privados .
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 completa los formularios sabe que es "seguro", pero no es necesario que esté familiarizado con los detalles (como generar claves, etc.).