4

我知道当我从用户输入的数据中查询 PHP 中的 MySQL 数据库时,应该对数据进行清理。对于我正在启动的项目,我将针对 Active Directory 进行身份验证,以便使用 ldap_bind() 函数登录。

我已采取措施检查密码以防止匿名绑定尝试,但我想知道是否需要采取任何其他预防措施,就像我在使用用户输入的数据时通常会采取的那样。或者这是 Active Directory 会自行处理的事情?

4

2 回答 2

4

我是一个 OpenLDAP 类型的人,但如果我没记错的话,没有办法用特殊字符来利用它。

但是,这并不意味着去掉你知道不存在的东西不是一个好习惯,特别是在用户名或生成的绑定路径中。例如:

$myname = preg_replace("/[^a-zA-Z0-9_\ -]/", "", $myname);

除了小写、大写、数字、下划线、空格和破折号之外,这将删除所有内容。使用“只允许这个”逻辑而不是“拒绝某些东西”总是更安全。你永远不会想到要拒绝的所有事情。

于 2010-12-17T19:53:24.220 回答
2

小心验证密码不为空。听起来很傻,但根据 LDAP 标准,使用用户名且没有密码的绑定被视为匿名绑定并且会成功。

如果您使用绑定尝试的成功/失败来验证用户凭据,那么空密码将是一种很好的伪造密码的方法。

于 2010-12-19T02:15:36.960 回答