【问题标题】:Storing MySQL Passwords [closed]存储 MySQL 密码 [关闭]
【发布时间】:2012-12-10 02:26:31
【问题描述】:

所以,我和一个朋友目前正在编写一个面板(在 python/django 中)来管理游戏服务器。 每个客户端还使用他们的游戏服务器获得一个 MySQL 服务器。我们目前所坚持的是客户如何找到他们的 MySQL 密码以及如何“存储”它。

密码将随机生成并在面板中显示给用户,但是,我们显然不希望它们以明文或可逆加密的形式存储,因此我们不确定如果客户忘记了密码该怎么办。

我们会尽量避免重置密码,因为一些客户端可能会在游戏服务器仍在尝试使用密码时重置密码,这可能会导致损坏和崩溃。

什么是安全的(但不会牺牲客户的易用性)方法来解决这个问题?

【问题讨论】:

  • “在面板中呈现给用户” && “不希望它们以明文或可逆加密的形式存储” 我不'不明白。
  • 我们希望能够在用户忘记密码的情况下恢复提供的密码,但这样做是安全的。
  • 不要以可恢复的方式存储密码。只需实施密码重置并完成即可。
  • 但问题是,如果有人在游戏服务器运行时重置密码,可能会导致数据完整性问题。但是我认为我们不会存储它们
  • 重置不会影响“数据完整性”。

标签: python mysql django security encryption


【解决方案1】:

虽然这不是你要找的答案,但你只有三种可能

  • 存储密码明文(啊!)
  • 使用可逆加密存储,例如RSA (http://stackoverflow.com/questions/4484246/encrypt-and-decrypt-text-with-rsa-in-php)
  • 不要存储它;客户只能重设密码,不能查看

第二种选择是一种安全方式,因为 RSA 还用于您选择的银行使用的 HTTPS 协议中的 TLS 加密;)

【讨论】:

  • 我会选择选项 #3。通过只允许重置,您完全消除了可逆加密的密钥存储问题。重置密码是一个完全解决的问题。
  • 完全“是”,但问题包括密码 recovery 由 OPs 定义...否:)))
  • IMNSHO,“密码恢复”听起来不错,但规范的功能很幼稚;不幸的是,它本质上是不安全的。密码重置安全的(或者至少可以)。但是也许安全性对于这个应用程序来说并不重要。
【解决方案2】:

您的问题在措辞上体现了矛盾。要么你不想要可逆性,要么你想要。你必须做出选择。

通常的技术是对密码进行哈希处理,并为用户提供一种在足够的替代身份证明上重置自己的密码的方法。出于法律不可否认性的原因,您永远不应向任何人显示密码。如果您不知道这意味着什么,请咨询律师。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-17
    • 2017-12-26
    • 2014-06-23
    • 2017-04-08
    • 1970-01-01
    • 2013-03-30
    • 2014-05-28
    • 1970-01-01
    相关资源
    最近更新 更多