是否可以在没有https服务器的情况下拥有安全的Web表单?

时间:2009-02-05 14:31:14

标签: php javascript http https

我有一个托管服务提供商的网站,它没有给我一个固定的IP地址,所以我不能使用https。我想使用webform编辑一些页面,但是要安全。

客户端将是一个iphone类型的设备,因此java或flash applet是不可能的。

  • 有没有办法在浏览器中仅使用javascript在服务器和浏览器之间建立安全连接?

服务器上的语言目前是php,但它可能是ruby,python,perl或lua。

10 个答案:

答案 0 :(得分:12)

安装SSL证书在技术上并不需要固定的IP地址 - SSL证书与主机名(公用名)相关联。我们经常更改主机上的IP地址,并且从未更改与证书相关的任何内容。

那就是说,你确实可以使用JavaScript等,但它并不是一个很好的解决方案 - 它总会闻起来像黑客。

答案 1 :(得分:5)

您可以使用某种形式的public key encryption implemented in javascript

  • 您向客户端提供表单,公钥和js加密库
  • 提交时,js将加密表单有效负载
  • 您使用私钥解密

这会阻止任何人在线上嗅探您的敏感信息,但不会提供任何针对中间人攻击的保护。 SSL使这种攻击变得有点棘手,但并非不可能。

答案 2 :(得分:4)

不是传统意义上的,没有,但有一些选择:

  1. 获得更好的托管服务。你可以每月20美元a VPS with a fixed IP。每年30美元的证书。对于需要安全保障的人来说相当便宜。

  2. 您可以加密表单数据using javascript and PGP。这很便宜(它会让你的用户看到它),但它应该保持你的数据足够安全。

  3. 可能有第三方允许通过其服务器(以及扩展名)提交表单。您和您的用户必须相信他们不要滥用数据。

答案 3 :(得分:3)

theory 中,您可以使用Javascript和XmlHttpRequests在客户端和服务器之间实现某种安全通信。在实践中,它听起来像很多工作,而且它快速而真实安全的可能性似乎很低。

正如亚历克斯上面所说,即使你设法在JS中实现,你仍然必须通过不安全的连接向客户端提供JS,因此使它完全没有意义。

然而,在Javascript之前已经实现了更疯狂的事情......

答案 4 :(得分:1)

我会说答案是否定的。原因是没有https,所有流量都是未加密的纯文本。因此,任何人都可以读取客户端上的任何加密算法或密钥交换。我可能错了......我从未尝试过。

答案 5 :(得分:1)

理论上可行,只要您可以控制客户端并且(例如)在那里有可信赖的javascript,而不是从服务器下载的。我可以详细说明,但与使用https相比,这些行上的任何内容都是PITA并且容易出错。

此外,没有必要拥有固定的IP - 你有域名吗?

答案 6 :(得分:0)

如何使用Javascript?为了使浏览器执行javascript,它必须首先从(先前声明的)不安全的服务器下载它。 HTTPS是一种服务器/客户端协议,因此如果您无法使用服务器本身,则根本无法实现它。

HTTPS所需的只是一个IP地址,因此如果更改则无关紧要。您应该能够将HTTPS与动态IP一起使用,但您可能需要与您的主机进行通信。如果您的托管位于共享服务器上,那么它将无法运行,您将需要专用IP。它们并不贵,所以也许你应该每月花掉3/4美元?

亚历

答案 7 :(得分:0)

SSL使用域名而不是IP地址。只要您拥有并拥有域名,并且让服务提供商愿意打开端口443并安装您为您的网站购买的证书,您就可以执行HTTPS。

话虽如此,假设你不能这样做,请查看SRP

来自网站:“SRP是一种安全的基于密码的身份验证和密钥交换协议。它解决了安全地向客户端验证客户端的问题......此外,SRP交换了一个加密密集的秘密作为成功的副产品身份验证,使双方能够安全地进行通信。“

他们有一个Javascript示例。您可以使用副产品通过网络加密数据。

然而,像大多数海报一样,你最好转移到新的提供者。

答案 8 :(得分:0)

差不多2年了,但现在JavaScript中有一个开源SSL / TLS实现。但是,它目前依赖Flash来提供原始套接字访问...所以除非应用程序要在Android手机而不是iphone上运行,否则它可能没那么有用。

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

答案 9 :(得分:0)

是。您可以使用Private Forms中使用PGP加密的嵌入表单。

私有表单是SaaS,它在将数据发送到服务器之前对客户端的Web表单数据进行加密。然后,此加密数据将发送给您。所有数据都使用您的PGP公钥加密,只有您可以使用PGP私钥解密。

因此,填写表格的人知道它的安全",但他们不需要熟悉细节(如生成密钥等)。