我正在开发REST API(PHP / MySQL),并且想在我的游戏(Unity / C#)中使用此API。我知道双方该怎么做,但是我遇到了一个问题:如何处理密码?
我认为是使用此路由来检查用户是否有效:https://my-website.com/api/users/{email}/{password}
(如果不好,请告诉我如何发送这些值)
然后,我想在输入后直接对密码进行哈希处理(在C#中的游戏中=我知道该怎么做),但是我可以安全地将哈希发送给服务器吗?我是否存储哈希值?显然,检查是在服务器端完成的,因此对照db hash检查哈希值使调用容易受到攻击吗?如果有人在请求期间读取了哈希,他就会得到哈希,以便他可以窃取信息...
我真的迷失了这一切。仅供参考,我正在使用HTTPS(因此应该避免中间人...)。
真正的问题是:如何将密码从游戏安全地传输到服务器?
答案 0 :(得分:1)
您不需要哈希密码。以此类推,如果您在网站上提交表单,它将直接将密码发送到服务器,Web应用程序不需要执行任何操作。
只需确保它是通过安全连接发送的。如果可能的话,请使用strict transport security,这样就根本不可能以纯文本格式发送它。
通常,在客户端发布正确的用户/密码对之后,服务器将返回cookie或令牌,然后将其存储在客户端上并用于进行后续调用。这取决于您的服务器端框架,将来必须根据该Cookie /令牌进行身份验证。这样,您无需将密码存储在客户端上,这是主要的安全问题。
答案 1 :(得分:1)
我看到您的服务是https服务,因此您可以发送用户名(电子邮件)和密码作为基本身份验证标头。 Basic access authentication