Minecraft使用启动器来减少游戏盗窃:任何人都可以免费下载,但用户必须提供高级帐户的凭据才能更新游戏。我想为一个项目构建一个类似的启动器(在Ruby中),但我无法弄清楚如何安全地将密码发送到HTTP服务器(如果重要的话,用Sinatra编写)。显然,将它作为URL中的参数是一个非常糟糕的主意。
另外,我虽然以某种方式使用密码字段发送它,但我不知道它们是如何工作的(我通常不做HTTP的东西)。这仍有可能。
简短摘要:在Ruby中,我想通过HTTP请求将敏感信息发送到Ruby / Sinatra服务器。
感谢您阅读本文!
答案 0 :(得分:2)
使用密码字段没有帮助。甚至没有通过POST发送。无论你多么努力地隐藏它们,它们都是用明文发送的 - 这就是http的本质。
你绝对应该使用TLS而不是https。 stdlib为此提供了Net::HTTP,但您可以使用任何支持https的http客户端。
如果此计划涉及金钱/价值,请不要满足于任何要求!发明自己的协议是
不,老实说,发明安全协议可能是最困难的工作之一。所以要蹩脚并坚持主流(https),它最终会得到回报。
编辑:
您问TLS是否因为需要证书而需要花钱。这只是服务器端的一个问题,在单向认证的TLS中,只有服务器需要提供证书,因此连接到该服务器的客户端不必购买这样的证书。但是,如果您也操作服务器,那么您将需要这样的证书。如果您不想花钱,您可以查看托管,免费为您提供https。 Heroku提供了我所知道的免费服务,并且我认为还有其他提供商。
答案 1 :(得分:-1)
正如@Len所说,使用HTTPS,或者,如果不是一个选项,只用以下方法加密密码:
然后,您将在您的服务器上使用您的启动程序分发公共RSA密钥,并使用这些密钥加密密码(或使用这些密钥加密对称加密密钥)。