我有一个托管在提供商上的网站,它没有给我一个固定的 IP 地址,所以我不能使用 https。我想使用网络表单但以安全的方式编辑某些页面。
客户端将是 iphone 类型的设备,因此 java 或 flash 小程序将是不可能的。
- 有没有办法只在浏览器中使用 javascript 在服务器和浏览器之间建立安全连接?
服务器上的语言目前是 php,但它可以是 ruby、python、perl 或 lua。
我有一个托管在提供商上的网站,它没有给我一个固定的 IP 地址,所以我不能使用 https。我想使用网络表单但以安全的方式编辑某些页面。
客户端将是 iphone 类型的设备,因此 java 或 flash 小程序将是不可能的。
服务器上的语言目前是 php,但它可以是 ruby、python、perl 或 lua。
安装 SSL 证书在技术上不需要固定的 IP 地址 - SSL 证书与主机名(通用名称)相关联。我们经常更改主机上的 IP 地址,并且从未更改与证书相关的任何内容。
也就是说,你确实可以使用 JavaScript 或类似的东西,但这并不是一个很好的解决方案——它总是闻起来像黑客。
您可以使用在 javascript 中实现的某种形式的公钥加密:
这将阻止任何人在网络上嗅探您的敏感信息,但不提供任何针对中间人攻击的保护。SSL 使这种攻击更难实施,但并非不可能。
不是传统意义上的,不是,但有几个选择:
获得更好的托管。您可以以每月 20 美元的价格购买具有固定 IP 的 VPS 。每年30美元的证书。对于需要安全的人来说相当便宜。
您可以使用 javascript 和 PGP加密表单数据。这很便宜(它会在您的用户看来),但它应该保证您的数据足够安全。
可能有第三方允许通过他们的服务器(以及扩展)他们的证书提交表单。但是,您和您的用户必须相信他们不会滥用数据。
理论上,您可以使用 Javascript 和 XmlHttpRequests在客户端和服务器之间实现某种安全通信。在实践中,这听起来像是很多工作,而且它快速且真正安全的机会似乎很低。
正如 Alex 上面所说,即使您设法在 JS 中实现,您仍然必须通过不安全的连接将 JS 提供给客户端,因此这一切都毫无意义。
尽管如此,更疯狂的事情已经在 Javascript 中实现了......
我会说答案是否定的。原因是没有 https,所有流量都是未加密的纯文本。因此,任何人都可以读取客户端的任何加密算法或密钥交换。不过我可能是错的……我从未尝试过。
这在理论上是可能的,前提是您可以控制客户端并且(例如)那里有未从服务器下载的受信任的 javascript。我可以详细说明,但与使用 https 相比,这些行中的任何内容都是 PITA 并且容易出错。
此外,不需要固定 IP - 你有域名吗?
怎么可能使用Javascript?为了让浏览器执行 javascript,它必须首先从(前面提到的)不安全的服务器下载它。HTTPS 是一种服务器/客户端协议,因此如果您无法使用服务器本身实现,那么您将根本无法实现它。
HTTPS 所需要的只是一个 IP 地址,因此它是否更改也没关系。您应该能够使用带有动态 IP 的 HTTPS,但您可能需要与您的主机商交谈。如果您的主机位于共享服务器上,那么它将无法正常工作,您将需要一个专用 IP。它们并没有那么贵,所以也许你应该每月支付 3/4 美元?
亚历克斯
SSL 根据域名而不是 IP 地址运行。只要您拥有并拥有一个域名,并且有一个愿意打开端口 443 并安装您为您的站点购买的证书的提供商,您就可以使用 HTTPS。
话虽这么说,假设您做不到,请查看SRP:
来自该站点:“SRP 是一种安全的基于密码的身份验证和密钥交换协议。它解决了将客户端安全地验证到服务器的问题......此外,SRP 交换了一个加密强的秘密,作为成功身份验证的副产品,它使双方能够安全地通信。”
他们有一个 Javascript 示例。您将使用副产品通过网络加密数据。
但是,像大多数海报一样,您最好还是换一个新的提供商。
差不多 2 年后,但现在 JavaScript 中有一个开源 SSL/TLS 实现。但是,它目前依赖 Flash 提供原始套接字访问......所以除非应用程序要在 android 手机而不是 iphone 上运行,否则它可能没有那么有用。
是的。您可以使用Private Forms中使用 PGP 加密的嵌入式表单。
Private Forms 是一种 SaaS,它在将数据发送到服务器之前对客户端的 Web 表单数据进行加密。然后,此加密数据将发送给您。所有数据都使用您的 PGP 公钥加密,只有您可以使用您的 PGP 私钥解密。
因此,填写表格的人知道它是“安全的”,但他们不需要熟悉细节(如生成密钥等)。