6

我有一个托管在提供商上的网站,它没有给我一个固定的 IP 地址,所以我不能使用 https。我想使用网络表单但以安全的方式编辑某些页面。

客户端将是 iphone 类型的设备,因此 java 或 flash 小程序将是不可能的。

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

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

4

10 回答 10

12

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

也就是说,你确实可以使用 JavaScript 或类似的东西,但这并不是一个很好的解决方案——它总是闻起来像黑客。

于 2009-02-05T14:36:42.023 回答
5

您可以使用在 javascript 中实现的某种形式的公钥加密

  • 你给客户端表单、你的公钥和一个 js 加密库
  • 提交时,js 开始加密表单有效负载
  • 你用你的私钥解密

这将阻止任何人在网络上嗅探您的敏感信息,但不提供任何针对中间人攻击的保护。SSL 使这种攻击更难实施,但并非不可能。

于 2009-02-05T14:37:17.013 回答
4

不是传统意义上的,不是,但有几个选择:

  1. 获得更好的托管。您可以以每月 20 美元的价格购买具有固定 IP 的 VPS 。每年30美元的证书。对于需要安全的人来说相当便宜。

  2. 您可以使用 javascript 和 PGP加密表单数据。这很便宜(它会在您的用户看来),但它应该保证您的数据足够安全。

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

于 2009-02-05T14:39:05.543 回答
3

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

正如 Alex 上面所说,即使您设法在 JS 中实现,您仍然必须通过不安全的连接将 JS 提供给客户端,因此这一切都毫无意义。

尽管如此,更疯狂的事情已经在 J​​avascript 中实现了......

于 2009-02-05T14:34:57.940 回答
1

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

于 2009-02-05T14:34:41.620 回答
1

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

此外,不需要固定 IP - 你有域名吗?

于 2009-02-05T14:38:25.233 回答
0

怎么可能使用Javascript?为了让浏览器执行 javascript,它必须首先从(前面提到的)不安全的服务器下载它。HTTPS 是一种服务器/客户端协议,因此如果您无法使用服务器本身实现,那么您将根本无法实现它。

HTTPS 所需要的只是一个 IP 地址,因此它是否更改也没关系。您应该能够使用带有动态 IP 的 HTTPS,但您可能需要与您的主机商交谈。如果您的主机位于共享服务器上,那么它将无法正常工作,您将需要一个专用 IP。它们并没有那么贵,所以也许你应该每月支付 3/4 美元?

亚历克斯

于 2009-02-05T14:34:53.477 回答
0

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

话虽这么说,假设您做不到,请查看SRP

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

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

但是,像大多数海报一样,您最好还是换一个新的提供商。

于 2009-02-05T14:39:57.477 回答
0

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

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

于 2010-08-31T16:56:01.507 回答
0

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

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

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

于 2015-09-01T14:04:19.723 回答