首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传送讯息

传送讯息
EN

Security用户
提问于 2013-11-14 22:17:33
回答 1查看 144关注 0票数 0

我目前正在开发一个游戏,将在一个客户端运行,他们将注册这个游戏,并在那里创建他们的帐户,他们的信息将存储在一个MySQL数据库。我正在创建的游戏使用Lua + Love2D,在游戏启动后,用户将显示一个登录和密码字段。这一进程如下:

  1. 用户提交数据
  2. 客户端将他们的用户名发送给服务器,请求他们的密码盐。
  3. 客户端从服务器接收salt,并将其附加到其输入中。
  4. 客户端哈希使用SHA256附加一定数量的密码
  5. 客户端将最终哈希发送到服务器。
  6. 服务器检查它是正确的哈希
  7. 客户端接收“true”或“false”,这取决于密码是否正确

现在我的问题是,我听说有人可以很容易地截获这些数据,并获取他们的用户名、盐分和密码哈希,然后基本上将这些信息发送到服务器,以某种方式将其身份验证到那个人的帐户。我怎样才能防止这种情况发生呢?我可以使用像身份验证密钥这样的东西吗?如果是的话,你能解释一下这是怎么回事吗?

EN

回答 1

Security用户

回答已采纳

发布于 2013-11-14 23:41:24

是的,你是对的,有人可以拦截通信,并作为用户登录,你也做了很多额外的不必要的工作在客户端。以下是我要做的步骤

  1. 用户提交数据
  2. 客户端建立到服务器的安全链接(SSL或类似的)。
  3. 客户端通过安全链接向服务器发送用户名和密码。
  4. 服务器在数据库中查找用户名并检索salt、迭代计数和散列密码。
  5. 服务器通过适当的密码派生函数(如bcryptpbkdf2 )运行发送的密码、查找的salt和查找的迭代计数。
  6. 服务器将前面函数的输出与它查找的哈希密码( )进行比较。
    1. (可选)如果密码正确,服务器将检查是否提高了服务器的最小迭代计数,如果用户帐户低于最小值,服务器将在新的迭代计数级别使用新的salt再次运行密码,并在数据库中记录新哈希、新计数和新salt。

  7. 客户端通过安全链接接收“true”或“false”,这取决于密码是否正确
票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/45503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档