2010-08-27 193 views
7

我一直在开发一个基于PHP的CMS用于我的机器人团队的网站。当然,还有很多其他的平台,但那有什么好玩的?安全的PHP登录系统?

尽管如此,我们确实得到了额外的积分,可以说我们不仅仅为Drupal或WP做了一个模板。这有点不相关,但我希望有一天能够将CMS作为FOSS发布,但它肯定要成熟并且更安全。但我离题了。

我已经达到了开发这个系统的地步,我需要一个登录系统。这造成了比我预期的更多的挫折感。当涉及到安全问题时,我可以一丝不苟,这不是一个例外。问题是,我知道如何照顾数据库安全(不要信任用户输入,将密码存储为随机盐的散列等),但我缺乏制定良好客户端 - 服务器系统的知识。在这方面有几个问题:使用会话变量有多安全?在这方面,如何正确实现会话变量?是否应该在每个网页浏览中重新生成会话Cookie?在使用cookie保持用户登录时间不变时,您会放弃很多安全措施,但实施此类系统的最佳做法是什么?

关于这个问题的一个很好的教程也会有很大的帮助。

谢谢你的时间。

回答

3

如果您想真正了解有关问题/解决方案的更多信息,而不是复制/粘贴某人的代码,请查看本文。

http://jaspan.com/improved_persistent_login_cookie_best_practice

为持续性cookie管理优秀的资源,但不给你的代码,它为您提供了一个良好的接地/观,努力营造一个更安全的登录系统。

当然,最安全的PHP登录系统是没有持久登录功能的系统,因为用户凭证永远不会存储在远离服务器的任何地方。

+0

哇我读了那篇文章,那个页面真的很有趣! +1顺便说一句,您应该指出问题的实际解决方案已接近尾声,但在阅读信息之前了解它为何更安全是很好的。 – Kranu 2010-08-27 06:59:08

+0

你刚刚为我完成了;)本文的第一部分通过其他地方编写的文章的基础知识,然后在本文稍后部分对其进行扩展。 – Stoosh 2010-08-27 07:03:16

+0

提供的链接不是一个改进。阅读http://stackoverflow.com/questions/549/the-definitive-guide-to-forms-based-website-authentication/477579#477579了解更多信息。 可悲的是,我的upvote不能撤销 – Nullius 2012-08-30 14:15:24

1

呃,解释所有的问题将填补一个好大小的书 - 对他们无所谓的解决方案。白痴指南的删节内容提要

读者文摘版本是:

  • 使用SSL
  • 确保安全的HttpOnly标志会话cookie设置(继续会话劫持读了, MITM攻击)
  • 再生在登录会话ID(去会话固定读了),并注销
  • 实现了身份验证和授权系统的抽象层
  • 实现抽象sperate层在每个这两种成分的
  • 就实现每个页面的授权检查
  • 工作提前出局,如果你需要在可视性方面来划分您的数据/访问