【问题标题】:Is sending unencrypted passwords a good pratice?发送未加密的密码是一种好习惯吗?
【发布时间】:2011-09-12 23:44:31
【问题描述】:

我正在建立一个需要注册和登录的网站。 由于我是 Web 开发的新手,我想如果将未加密的密码发送到服务器是一种选择。 或者,你会推荐我什么,因为我对密码学一无所知?

编辑:http://pastebin.com/nYcazcZq

【问题讨论】:

  • 发哪里用什么?你能举一个具体的例子来说明你在做什么吗?
  • 这是我写的代码。您如何看到密码在数据库上被加密,而不是在客户端和服务器之间的连接中。我必须购买 SSL 证书吗?费用多少?
  • 如果已经登录,我会检查服务器和会话中存储的信息:它真的提高了安全性吗?
  • 您应该在登录页面上使用 SSL 来保护您的用户密码。您应该在整个站点上使用 ssl 以防止会话劫持。请记住,如果您有任何用户在咖啡店或机场使用未加密的无线连接,那么除非您使用 ssl,否则任何人都可以监听流量并读取用户名、密码和会话 cookie。没有 ssl 的登录没有多大意义。试试 rapidssl.com。

标签: php mysql security passwords


【解决方案1】:

如果您的网站只是用于测试或在 Intranet 中使用,那没什么大不了的。

如果没有,我强烈建议您使用 SSL。

如果您买不起证书,至少让您的用户可以选择:

  • 使用 OpenID 登录(因为大多数 OpenID 提供商都提供 SSL 进行身份验证);
  • 使用摘要式身份验证(不会通过网络以明文形式发送密码)登录。

【讨论】:

    【解决方案2】:

    如果您的意思是从浏览器发送到您的服务器,那么您需要使用 https/ssl 来加密连接,而不是密码本身。另一方面,如果您正在谈论存储明文密码,那么是的,这也很糟糕。您应该使用强盐(每个用户最好)和慢速算法对其进行哈希处理。

    这个答案更详细地介绍了通过 SSL 发送密码:Sending passwords over the web

    您可以使用 PHP 的 crypt 进行散列:http://php.net/manual/en/function.crypt.php

    【讨论】:

      【解决方案3】:

      请记住,即使您的服务没有任何有价值的有效负载,也可以保证您的许多用户将使用相同的密码来处理更有价值的东西,这意味着违规或容易被截获的密码可能会造成伤害。即使这对用户而言是不好的做法,但这是生活中不可避免的事实,因此在任何情况下,它都没有责任对可公开访问的服务的用户凭据漠不关心。请使用 SSL/https 或 OpenID(或其他外部托管的登录管理方案,甚至 Facebook:how to use facebook for user login on my website?),如果您是密码持有者,请不要将它们以明文形式保存在数据库中。

      【讨论】:

        【解决方案4】:

        发送未加密的密码绝不是好事。对于一个严肃的网站,您应该使用 https 加密浏览器和服务器之间的流量。您可以通过购买安装在网络服务器上的证书来做到这一点。

        【讨论】:

          【解决方案5】:

          永远不要在网上发送原始关键数据,我认为使用 ssl 是最好的解决方案,您也可以使用 javascript 加密器在客户端加密密码并在服务器中解密,

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-12-08
            • 2021-02-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多