我正在开发一个游戏启动器,它有一个C#前端和PHP后端进行身份验证,我需要通过未加密的连接将启动器的密码发送到后端。有没有办法安全地做到这一点? (密码是以$ 2y开头的数据库中的河豚哈希值存储...)
答案 0 :(得分:4)
Establishing an SSL
连接是传输密码等敏感信息的最常用方法之一。为此,至少您必须为您的服务器/后端提供密钥对(证书)。如果您的应用程序本身适用于它而不是浏览器,则不必由veriSign签名。
请注意:您真正关注的是机密性'。这意味着除了您和您的目标方之外,没有人可以阅读邮件内容。随之而来的是对加密机制的正确使用'在多数情况下。您还希望能够抵御诸如Man in the Middle Attack之类的攻击。
开发人员通常会编写一些有用的东西,然后考虑安全性;但是如果你能提前想到它,那就有一个无可置疑的好处。
编辑:如果您只需要安全地发送密码,那么@ rich.okelly的答案就是答案。由于您可以在应用程序上对服务器的可信公钥进行硬编码,并且只是由客户端加密该密码。但是,如果您希望为更多/所有会话建立安全连接,则可能需要考虑使用SSL解决方案。
答案 1 :(得分:2)
在所有情况下,您的要求是:
从一种不安全的,未加密的数据传输方式开始,我如何最终使用安全,加密的方式传输数据至少足以发送密码?
有很多方法,rolling your own是最糟糕的。选项包括但不限于:
在所有情况下,您都必须以某种方式直接更改后端和前端,或者在它们之间添加另一层(VPN)。
答案 2 :(得分:1)
正如我所看到的,最好的办法是(假设连接必须是不安全的),在发送密码之前加密密码并在后端解密 - 有效地滚动你自己的消息级加密。
您需要一种非对称加密机制才能实现这一点 - 公钥/私钥可能是最简单的方法。