gpt4 book ai didi

java - 某些属性的某些字符的 LDAP 搜索失败

转载 作者:行者123 更新时间:2023-11-30 10:40:44 24 4
gpt4 key购买 nike

我有一个看起来像这样的查询:

(|(mail=andrew*)(cn=andrew*)(sn=andrew*)(telephoneNumber=andrew*))

即它从 UI 中获取一个搜索词,并在一系列属性中寻找与 term* 的匹配项。

在这种情况下,用户输入 andrew,应用会添加通配符。如果用户输入 andrew`(尾随勾号),应用会查找 andrew`*。

我注意到,如果 telephoneNumber 包含在搜索到的属性中,则查询会失败并出现 javax.naming.InvalidAttributeValueException,如果将其排除在外,则查询可以正常运行。

我对单独的反引号不是特别感兴趣,但由于它不是 LDAP 搜索中的特殊字符,我想知道为什么我会出现这种行为以及其他字符是否会产生类似的结果。如果我能弄清楚如何查询它,模式中是否会有解释这一点的东西,或者它会是其他东西吗?

如果重要,通过 Java 应用程序中的 Spring 库进行访问。

最佳答案

由于 telephoneNumber 属性的属性值限制,查询可能会失败。 this RFC 中描述了 telephoneNumber 属性的语法。 .倒勾确实看起来确实是 telephoneNumber 值中的无效字符。

现在,我可能是错的,但阅读您的问题似乎您正在尝试使用字符串连接来构造过滤器。请注意,您应该永远不要,永远不要使用字符串连接构建任何类型的查询,尤其是当部分查询来自用户输入时。我相信您知道 SQL 查询就是这种情况,当您使用 LDAP 时也是如此。

Spring LDAP 提供了两种方法来帮助您构建 LDAP 查询。首选方法是使用记录在案的 LDAP 查询 API here和(高级用法)here .旧的已弃用但仍在运行的方法是使用过滤器类,记录在旧的引用文档中 here .

使用这些实用程序,您无需跟踪哪些字符需要编码以及何时编码。您还消除了查询注入(inject)攻击的任何风险。

关于java - 某些属性的某些字符的 LDAP 搜索失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38776450/

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