【发布时间】:2012-05-06 07:34:10
【问题描述】:
我遇到了一些关于通过 LDAP Active Directory 服务器将用户身份验证集成到公司网站的问题。该网站主要在内部用于提供对文件/PDF 的安全访问。该网站可在我们的网络之外访问,因为某些客户还需要能够查看/上传文件以进行订单和验证。我们确实有一个 SSL 证书,用于安全访问该网站,无论是内部还是外部。
此时,该站点使用PHPass 进行密码处理,同时将用户信息存储在 MS SQL Server 数据库中。需要访问该站点的用户被添加到该数据库中,并注册了帐户级别并使用 phpass 处理密码方面。这种方法非常安全,适用于当前使用情况(内部员工、外部客户的隔离数据)。然而,它也为整个系统引入了更多的故障点。 IE:用户要记住(或忘记)的额外密码以及管理员额外的帐户管理开销。
在计划简化站点的身份验证时,我的任务是集成用于登录的 Active Directory 用户信息。这对我们公司的员工来说很好,因为他们已经有一个 AD 帐户。但是,这不会适用于外部供应商或客户,因为他们没有 AD 帐户(也不应该)进行身份验证。
这让我相信最简单的解决方案是拥有一种“主要”形式的身份验证(针对 AD)和针对已创建的 SQL 用户数据库的后备。像在 AD 中一样返回的用户,使用这些凭据,否则在 SQL DB 中搜索用户(其中将包含我们需要的任何非 AD 帐户)。
问题:
- 上述验证方法是合乎逻辑且安全的计划吗? 如果没有,我应该怎么做?
- 如何防范 LDAP 攻击/暴力破解?
- 在 PHP/SQL 中,利用参数化/类型转换查询、帐户锁定/超时、一般错误消息、正确的密码散列方法等 - 加起来以保护数据库和强制登录尝试
- 对于 ldap_bind,用户名和密码通过网络以明文形式发送到 LDAP 服务器?
- 由于此登录是针对整个网络的,我如何确保我的登录/站点不是安全性最薄弱的环节,或导致密码信息的访问过于容易?
注意:这是发布在 StackOverflow 而不是 ServerFault 上的,因为我的问题是对 PHP 网站进行安全编程。我的问题主要与用户登录时的网站访问、限制和权限问题有关,同时对 AD 或备份数据库进行身份验证。
【问题讨论】:
标签: php sql security authentication ldap