我插入一条记录到LDAP中使用JNDI的记录(通过双反斜线转义引号)。它的名字是c=""aa
。 JNDI做了一件逃避我的工作,所以它以c=\"\"aa
的分贝数降落。好的,这就是我期望考虑所有逃脱规则的原因。不能使用信息搜索结果中删除
当然现在我要删除这条记录。我可以搜索它并获得它的名字。 这个名字应该是很好的删除记录。
的问题是,下面的代码:
SearchResult sr = obtainSearchResultInJndiWay();
System.out.println("name: " + sr.getName())
回报name: c=\\"\\"aa
。
这不起作用。我无法删除这样的项目,因为找不到。我应该删除项目c=\"\"aa
,但我无法获得正确的LdapName。
我应该手动转换双反斜线?我甚至发现了这样做的第三方代码。这是否是另一个证明JNDI是一个可怜的概念,就像这个问题,关于forward slashes?
我的解决方案是禁止在ldap名称中输入斜杠和引号。这是一个很好的解决方法吗?我期望什么其他陷阱?有没有任何指导如何安全地使用JNDI的Ldap?这些是一个迷失的人的问题。为了使问题更加清晰,Stack:如何处理这个问题?