发送未加密的密码是一种好习惯吗?

时间:2011-06-11 08:52:53

标签: php mysql security passwords

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

修改:http://pastebin.com/nYcazcZq

5 个答案:

答案 0 :(得分:2)

如果您的网站仅用于测试或在Intranet中使用,那么这并不是一件大事。

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

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

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

发送未加密的密码永远不会好。对于严肃的网站,您应该使用https加密浏览器和服务器之间的流量。您可以通过购买在Web服务器上安装的证书来实现此目的。

答案 4 :(得分:0)

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