php用户管理系统

时间:2012-02-06 08:46:50

标签: security forms-authentication data-protection

我正在打开我的网站的最后一步,但唯一让我抓狂的是php用户管理。我找到了很多关于构建这些系统的资源,我相信我可以用自己的方式编写它们。问题是,当涉及到安全性时,我会变得如此疯狂。例如,在通过SSL发送敏感信息时,有些人建议确保信息在注册表中加密,以便攻击者无法破解它。还有一些建议确保在发生错误时不显示调试消息,以便攻击者无法回溯链接.etc。

现在我从这里和那里读到md5不再安全所以我想知道如何散列新的用户密码等...我找到了一些已经提供一些用户管理的程序员的链接,但不确定如果它们足够好,因为我担心优先考虑安全问题CodeCanyon

那么现在我必须关注哪些安全措施? 有没有相关的资源?

谢谢,

4 个答案:

答案 0 :(得分:4)

您不必(您不应该)在人们告诉您实施的不同事物之间做出选择。良好的安全性始终是分层的,这意味着您可以实施尽可能多的保护。这种方法有多种用途。每层都可以防止不同的攻击。每一层都可以防止具有不同经验的攻击者。每层都可以增加攻击者所需的时间。

以下是一些对身份验证系统有用的tipp。

  • 不显示调试输出
  • 不要使用MD5哈希值。 SHA2甚至更好,bcrypt好多了
  • 存储密码时使用salt
  • 在表单上使用nonce(一次性令牌)
  • 始终要求服务器和客户端之间使用SSL加密
  • 在服务器上访问数据库时,请确保无法进行信息泄漏或客户端操作(例如, 避免注入攻击,用数据库驱动程序使用准备 陈述等。)
  • 确保所有登录失败(无论原因是什么)花费相同的时间来防止时间攻击
  • 当登录用户开始冒险操作(更改密码,付款等)时,重新验证他
  • 永远不要将密码存储为明文,而不是任何地方
  • 要求密码的最低复杂性
  • !!!保护你的php会话(另一个大话题,值得自己讨论) -

正如你所看到的,你可以做很多事情(更多的人可能会告诉你更多东西),你真正应该做的事情取决于你愿意接受的风险。但是,从不依赖单一的安全措施,总是采用分层方法。

答案 1 :(得分:2)

回答你的直接问题:已经证明MD5确实存在碰撞并且周围有彩虹表(参见Wikipedia)。 PHP确实有一些哈希函数available都有不同的优点和缺点。另请参阅php.net上的评论部分。

关于一般的Web应用程序安全性,我建议您查看有关使Web应用程序更安全的OWASP project。一个好的开始是看看Top Ten security vunerabilities(蓝色框中的“前十名”)。

答案 2 :(得分:1)

使用sha1存储密码,防止sql注入和xss脚本作为输入字段。 会话劫持,固定预防。

答案 3 :(得分:1)

首先,您应该通过SSL(TSL)将数据发送到服务器,这将加密。此外,您应该对发送到服务器的任何表单使用CSRF保护。

当您实现了功能并且它们有效时,您应该尝试自己破解您的网站。尝试通过表单注入SQL,JS,尝试在表单发送后操纵日期,您也可以尝试生成将写入PHP错误日志的错误,即使您的服务器设置较弱也可以执行。 (http://en.wikipedia.org/wiki/Hardening_(computing))

当您在数据库中存储密码时,请使用种子散列函数,如果有人能够破解您的数据库并获取散列,则无法在没有种子的情况下对其进行加密。

您将通过谷歌找到有关所有技术的许多信息。