【问题标题】:passwords from html to php then mysql从 html 到 php 再到 mysql 的密码
【发布时间】:2011-07-23 11:52:39
【问题描述】:

我有一个注册页面,其中包含以下密码输入控件:

<input type="password" />

将此密码发送到服务器然后将其保存到数据库中以供以后登录时比较的最佳方法是什么?

【问题讨论】:

  • 我进行了快速搜索,从前几个结果中没有发现任何明显的结果,这些结果显示了如何不以文本形式将密码从客户端发送到服务器。我刚刚看到了一些关于 https 的东西,但目前这不是一个选项。如果它让你开心,请随时投反对票。但就个人而言,我认为您没有正确阅读我的问题。如果我们可以否决 cmets,我不会三思而后行否决您的评论。所以请不要阻止反对票。 ;)
  • 没有向服务器发送密码的好方法,您必须对其进行哈希处理并存储哈希值!
  • 如果input 元素上没有“名称”属性,则无论如何都不会发送任何内容。
  • @Adrian:哎呀,那么登录系统是如何工作的呢?取决于客户端进行散列(并公开你的盐和散列算法)真的很安全......
  • 对不起,我读得太快了,把它解释为关于散列和存储密码......

标签: php mysql html passwords


【解决方案1】:

正如@Elzo 所建议的,在涉及密码和隐私数据时必须使用 HTTPS。 HTTPS 对于网络数据传输很有用。现在,关于密码存储安全性……密码必须使用像 md5 这样的单向散列算法来保存(您可以使用 php 中的 md5() 函数)。不要在数据库中存储干净的密码。然后,当用户登录时,服务器端脚本会收到密码,它会检查用户通过html表单发送的md5(“userpasswordinput”)与db表中存储的值之间的对应关系(之前编码为md5).

【讨论】:

    【解决方案2】:

    最好的方法是使用 HTTPS。 HTTPS 保护从客户端到服务器的流量,专门为此而设计。你不需要在这个级别编码任何东西。 @Adrian 链接帖子是关于在数据库中存储密码的,您将获得有用的信息。请记住不要直接保存密码,保存哈希值或高度加密的版本。

    【讨论】:

    • HTTPS 是从客户端安全地发送密码到服务器的唯一方法吗?
    • 另一种方式是根本不发送它们。使用 oauth 或 openid 或其他不涉及密码的身份验证系统。
    【解决方案3】:

    在此处查看此答案:

    Best way to encode passwords in PHP

    【讨论】:

      猜你喜欢
      • 2018-11-15
      • 2013-07-19
      • 1970-01-01
      • 2017-02-03
      • 2013-12-28
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      相关资源
      最近更新 更多