2010-12-17 55 views
4

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

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

+0

欢迎来到SO。您可能想查看[adLDAP PHP库](http://adldap.sourceforge.net/) – Nathan 2010-12-17 19:57:49

回答

4

我是一个OpenLDAP类型的家伙,但如果我没有弄错,就没有办法利用这个特殊字符。

但是,这并不意味着剥离你知道不存在的东西是不好的做法,特别是在用户名或生成的绑定路径中。例如:

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

这将除去小写字母,大写字母,数字,下划线,空格和短划线之外的所有东西。使用“只允许这个”逻辑而不是“拒绝某些东西”总是更安全。你永远不会想到所有的东西都被拒绝。

2

小心验证密码不为空。听起来很愚蠢,但根据LDAP标准,绑定一个用户名并且没有密码被认为是一个匿名绑定,并且会成功。

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