我正在建立一个需要注册和登录的网站。由于我是网络开发的新手,我想知道是否可以向服务器发送未加密的密码。或者,既然我对密码学一无所知,你会怎么称呼我?
编辑:http://pastebin.com/nYcazcZq
如果你的网站只是为了测试或在内联网中使用,那没什么大不了的。
如果没有,我强烈建议您使用SSL
如果你买不起证书,至少给你的用户一个选择:
- 使用OpenID登录(因为大多数OpenID提供商提供SSL进行身份验证)
- 使用摘要式身份验证登录(不会通过网络发送清除的密码)
如果您的意思是从浏览器发送到服务器,那么您需要使用https://ssl来加密连接,而不是密码本身。另一方面,如果你谈论的是以明文存储密码,那么是的,这也很糟糕。你应该用强盐(每个用户最好)和慢算法来散列它。
这个答案详细介绍了通过SSL发送密码:通过网络发送密码
您可以使用PHP的crypt进行哈希:http://php.net/manual/en/function.crypt.php
请记住,即使您的服务没有任何有价值的有效载荷,也可以保证您的许多用户将使用与他们使用的更有价值的密码相同的密码,这意味着您端的密码被破解或容易被截获也会造成伤害。即使这对用户来说是一种糟糕的做法,但这是生活中不可避免的事实,因此在任何情况下,它都没有责任对公众可访问服务的用户证书感到厌倦。请使用SSL/https或OpenID(或其他外部托管的登录管理方案,甚至Facebook:如何使用Facebook在我的网站上进行用户登录?),如果你是密码持有者,请不要将它们以明文形式保存在数据库中。
发送未加密的密码是不好的。对于一个严肃的网站,你应该使用https加密浏览器和服务器之间的流量。您可以通过购买安装在web服务器上的证书来实现这一点。
从不在网上发送原始关键数据,我认为使用ssl是最好的解决方案,也可以使用javascript加密器在客户端加密密码,在服务器中解密,