我正在打开我的网站的最后一步,但唯一让我抓狂的是php用户管理。我找到了很多关于构建这些系统的资源,我相信我可以用自己的方式编写它们。问题是,当涉及到安全性时,我会变得如此疯狂。例如,在通过SSL发送敏感信息时,有些人建议确保信息在注册表中加密,以便攻击者无法破解它。还有一些建议确保在发生错误时不显示调试消息,以便攻击者无法回溯链接.etc。
现在我从这里和那里读到md5不再安全所以我想知道如何散列新的用户密码等...我找到了一些已经提供一些用户管理的程序员的链接,但不确定如果它们足够好,因为我担心优先考虑安全问题CodeCanyon
那么现在我必须关注哪些安全措施? 有没有相关的资源?
谢谢,
答案 0 :(得分:4)
您不必(您不应该)在人们告诉您实施的不同事物之间做出选择。良好的安全性始终是分层的,这意味着您可以实施尽可能多的保护。这种方法有多种用途。每层都可以防止不同的攻击。每一层都可以防止具有不同经验的攻击者。每层都可以增加攻击者所需的时间。
以下是一些对身份验证系统有用的tipp。
正如你所看到的,你可以做很多事情(更多的人可能会告诉你更多东西),你真正应该做的事情取决于你愿意接受的风险。但是,从不依赖单一的安全措施,总是采用分层方法。
答案 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))
当您在数据库中存储密码时,请使用种子散列函数,如果有人能够破解您的数据库并获取散列,则无法在没有种子的情况下对其进行加密。
您将通过谷歌找到有关所有技术的许多信息。