目前我的身份验证是这样的:PHP认证
用户输入发送到服务器的用户名/密码组合 ,用户名和密码咸鱼和散列(MD5),并核对数据库。
如果正确,并且用户已指定,则设置一个月的长Cookie。
如果用户没有指定设置cookie,则会在5分钟不活动后自动注销。
我的问题是,如果我需要,以及如何使这更安全。我非常流利地使用PHP,但是我的安全性并不高。任何帮助,指针,线索和一般援助将不胜感激。
谢谢。 :)
目前我的身份验证是这样的:PHP认证
用户输入发送到服务器的用户名/密码组合 ,用户名和密码咸鱼和散列(MD5),并核对数据库。
如果正确,并且用户已指定,则设置一个月的长Cookie。
如果用户没有指定设置cookie,则会在5分钟不活动后自动注销。
我的问题是,如果我需要,以及如何使这更安全。我非常流利地使用PHP,但是我的安全性并不高。任何帮助,指针,线索和一般援助将不胜感激。
谢谢。 :)
这里有一些想法:
这就是我能想到的。
只要确保您从用户名和密码中剥离斜线以避免使用mysql_escape_real_string进行SQL注入,并且这应该是您需要的所有安全性。
听起来就像你试图发明一个新的认证。不要做 - 请遵循Amir的建议。
但是如果你想通过各种手段来调整密码,这里是JavaScript的想法:
盐没有秘密。将它发送给客户端,再加上nonce
- 另一个足够熵的随机值。
客户端发回nonce + hash(timestamp + hash(salt + password))
。服务器比检查最近是否为nonce
。
这会对付任何重播攻击。
(通过+
我表示级联。)
为什么你想在客户端做所有这些工作?虽然nonce是一个好主意,但是将所有内容发送到客户端并没有提高安全性。 – 2010-12-21 03:40:25
对于cookie的一部分,看看这篇文章由Drupal的相同特征的作者;它涵盖了他对实现这些功能的最佳实践的想法 - http://jaspan.com/improved_persistent_login_cookie_best_practice – 2010-12-21 03:38:56