gpt4 book ai didi

python - 我应该如何转义 ldap 特殊字符?

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:42 24 4
gpt4 key购买 nike

我正在使用 python-ldap 查询 Active Directory

我有这个DN

CN=Whalen\, Sean,OU=Users,OU=Users and Groups,DC=example,DC=net

作为查询的基础,它工作得很好,但如果我尝试在这样的搜索过滤器中使用它

(&(objectClass=group)(memberof:1.2.840.113556.1.4.1941:=CN=Whalen\, Sean,OU=Users,OU=Users and Groups,DC=example,DC=net))

我收到一个Bad search filter 错误。从我的测试来看,CN 中的逗号似乎是罪魁祸首,尽管我用反斜杠 (\) 将其转义。但是,Microsoft documentation 中没有列出逗号作为需要在过滤器中转义的字符。

我错过了什么?

最佳答案

LDAP 过滤器规范为以下字符分配特殊含义 * ( )\NUL 应该使用反斜杠转义,后跟字符 的两个字符 ASCII 十六进制表示搜索过滤器(rfc2254):

*   \2A
( \28
) \29
\ \5C
Nul \00

这意味着任何用于转义专有名称“特殊字符(包括逗号)的反斜杠必须在搜索过滤器中由 \5c 表示:

(&(objectClass=group)(memberof:1.2.840.113556.1.4.1941:=CN=Whalen\5c, Sean,OU=Users,OU=Users and Groups,DC=example,DC=net))

这是在搜索过滤器中使用时必须使用 \\5C 转义的 dn 特殊字符列表:

    +-------------------------------+---+
| comma | , |
+-------------------------------+---+
| Backslash character | \ |
+-------------------------------+---+
| Pound sign (hash sign) | # |
+-------------------------------+---+
| Plus sign | + |
+-------------------------------+---+
| Less than symbol | < |
+-------------------------------+---+
| Greater than symbol | > |
+-------------------------------+---+
| Semicolon | ; |
+-------------------------------+---+
| Double quote (quotation mark) | " |
+-------------------------------+---+
| Equal sign | = |
+-------------------------------+---+
| Leading or trailing spaces | |
+-------------------------------+---+

关于python - 我应该如何转义 ldap 特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39794550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com