我插入一條記錄到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:如何處理這個問題?