1

Minecraft 使用启动器来减少游戏被盗:任何人都可以免费下载,但用户必须提供高级帐户的凭据才能更新游戏。我想为一个项目构建一个类似的启动器(在 Ruby 中),但我无法弄清楚如何安全地将密码发送到 HTTP 服务器(如果重要的话,用 Sinatra 编写)。显然,将其作为 URL 中的参数是一个非常糟糕的主意。

另外,我想以某种方式使用密码字段发送它,但我不知道它们是如何工作的(我通常不做 HTTP 的东西)。这仍然是一种可能。

简短摘要:在 Ruby 中,我想通过 HTTP 请求将敏感信息发送到 Ruby/Sinatra 服务器。

感谢您阅读本文!

4

2 回答 2

2

使用密码字段没有帮助。即使通过 POST 发送也不行。无论您多么努力地隐藏它们,它们都是以明文形式发送的——这就是 http 的本质。

您绝对应该使用 TLS over https。标准库为此提供了Net::HTTP,但您可以使用任何支持 https 的 http 客户端。

如果该计划涉及金钱/价值,请不要满足于任何更少!发明自己的协议是

  • 更多的工作(我承认 TLS 并不总是很容易设置,但仍然少了很多工作)
  • 在 99.9% 的情况下不安全
  • 在其余情况下完全损坏

不,老实说,发明安全协议可能是目前最难的工作之一。所以跛脚并坚持主流(https),它最终会得到回报。

编辑:

您问 TLS 是否因为需要证书而花钱。这只是服务器端的一个问题,在单向身份验证的 TLS 中,只有服务器需要提供证书,因此连接到该服务器的客户端不必购买这样的证书。但是,如果您也操作服务器,那么您将需要这样的证书。如果您不想花钱,您可以考虑免费为您提供 https 的托管服务。据我所知, Heroku提供了这样一项免费服务,而且我认为还有其他提供者。

于 2012-06-25T14:21:22.833 回答
-1

正如@Len 所说,使用 HTTPS,或者,如果这不是一个选项,则只加密密码:

  • 至少,异或加密
  • 也许是 DES
  • 或者 RSA(完全矫枉过正,除非你的游戏值得权力黑客注意试图破解你的加密,因为 RSA 是银行和军事级别的)

然后,您将使用您的启动器(服务器上的私有密钥)分发一个公共 RSA 密钥,并使用它们来加密密码(或使用它们来加密对称加密密钥)。

于 2012-06-25T13:58:50.180 回答