2010-12-21 24 views
2

目前我的身份验证是这样的:PHP认证

用户输入发送到服务器的用户名/密码组合 ,用户名和密码咸鱼和散列(MD5),并核对数据库。

如果正确,并且用户已指定,则设置一个月的长Cookie。

如果用户没有指定设置cookie,则会在5分钟不活动后自动注销。

我的问题是,如果我需要,以及如何使这更安全。我非常流利地使用PHP,但是我的安全性并不高。任何帮助,指针,线索和一般援助将不胜感激。

谢谢。 :)

+0

对于cookie的一部分,看看这篇文章由Drupal的相同特征的作者;它涵盖了他对实现这些功能的最佳实践的想法 - http://jaspan.com/improved_persistent_login_cookie_best_practice – 2010-12-21 03:38:56

回答

0

这里有一些想法:

  1. 最重要的是使用SSL。 密码通过明文 发送,这意味着任何人都可以看到它。
  2. 什么是您设置的cookie? 我可以复制该cookie,然后是 授权吗?也许想想 创建一个随机令牌并将其设置为
  3. 您是否在防止交叉 网站伪造和跨站点 脚本?

这就是我能想到的。

+0

1)我没有SSL能力,所以我有点不在那里。 2)感谢您随机令牌的想法,我将从现在开始使用。 3)尽可能多地认为可能。 – foxtrot 2010-12-21 00:40:51

+0

如果你想要它是安全的,你真的应该使用SSL。否则,如果它只是一个宠物项目,那么我可以看到你不必。 – 2010-12-21 00:42:59

+0

为什么使用SSL?http://stackoverflow.com/questions/4495570/to-ssl-or-not-to-ssl – markmnl 2010-12-21 01:26:19

1

只要确保您从用户名和密码中剥离斜线以避免使用mysql_escape_real_string进行SQL注入,并且这应该是您需要的所有安全性。

0

听起来就像你试图发明一个新的认证。不要做 - 请遵循Amir的建议。

但是如果你想通过各种手段来调整密码,这里是JavaScript的想法:

盐没有秘密。将它发送给客户端,再加上nonce - 另一个足够熵的随机值。

客户端发回nonce + hash(timestamp + hash(salt + password))。服务器比检查最近是否为nonce

这会对付任何重播攻击。

(通过+我表示级联。)

+0

为什么你想在客户端做所有这些工作?虽然nonce是一个好主意,但是将所有内容发送到客户端并没有提高安全性。 – 2010-12-21 03:40:25