2

LDAP 服务器、PHP,并且不允许使用空密码。

我的代码当前检查密码是否为 true(是的,我将排除一些可能是有效的非空 LDAP 密码的值,例如"0")以避免允许使用 LDAP 进行空白密码登录。但这足够了吗?

是否可以创建一个 PHP 认为非空但会被 LDAP 视为空白密码的值?也许是一个带有0x0(空 C 字符串)的字符串或其他一些类似骇客的怪物?

使用ldap_bind()

4

1 回答 1

1

LDAP 标准涵盖了关于简单 BIND 操作的三种可能性,以及标准未解决的一种可能性:

  1. 空 DN 和空密码。不进行身份验证。这通常称为“匿名”,是连接的初始状态。
  2. DN 和空密码。不进行身份验证。
  3. DN 和密码。身份验证发生并且失败或成功。如果身份验证成功,则在 BIND 响应中返回零 (0) 结果代码。否则在 BIND 响应中返回非零结果代码。

最后,LDAP 标准没有解决:

  1. 没有 DN 和非空密码。不进行身份验证。目录服务器应拒绝此 BIND 操作。

服务器对前两个所做的取决于服务器的配置,但由于没有进行身份验证,如果服务器配置正确,则应该拒绝 BIND 操作。

于 2012-11-01T17:11:36.550 回答