2016-12-08 8 views
0

でLDAPクエリ誰かがコードの下に私を導くことができ、上記のコードで私はLDAPベースDNとsearchFilter値は実行するために行く前に消毒されて理解することができますが、私は理由を理解することはできませんジャワ

public String escapeDN (String name) { 
     //From RFC 2253 and the/character for JNDI 
     final char[] META_CHARS = {'+', '"', '<', '>', ';', '/'}; 
     String escapedStr = new String(name); 
     //Backslash is both a Java and an LDAP escape character, so escape it first 
     escapedStr = escapedStr.replaceAll("\\\\\\\\","\\\\\\\\"); 
     //Positional characters - see RFC 2253 
     escapedStr = escapedStr.replaceAll("\^#","\\\\\\\\#"); 
     escapedStr = escapedStr.replaceAll("\^ | $","\\\\\\\\ "); 
     for (int i=0;i < META_CHARS.length;i++) { 
      escapedStr = escapedStr.replaceAll("\\\\"+META_CHARS[i],"\\\\\\\\" + META_CHARS[i]); 
     } 
     return escapedStr; 
    } 


public String escapeSearchFilter (String filter) { 
     //From RFC 2254 
     String escapedStr = new String(filter); 
     escapedStr = escapedStr.replaceAll("\\\\\\\\","\\\\\\\\5c"); 
     escapedStr = escapedStr.replaceAll("\\\\\*","\\\\\\\\2a"); 
     escapedStr = escapedStr.replaceAll("\\\\(","\\\\\\\\28"); 
     escapedStr = escapedStr.replaceAll("\\\\)","\\\\\\\\29"); 
     escapedStr = escapedStr.replaceAll("\\\\"+Character.toString('\\u0000'), "\\\\\\\\00"); 
     return escapedStr; 
    } 

を消毒し、メソッドがどのように機能するのか...

ありがとうございました!!!

答えて

1

一般的な方法でDNを解析するのは難しい作業です。 UnboundIDApache LDAPなどの特定のLDAP APIを使用することをおすすめします。あなたが見たい場合は

複雑さのいくつかをチェックアウト:https://docs.ldap.com/ldap-sdk/docs/javadoc/src-html/com/unboundid/ldap/sdk/DN.html#line.280

-jim

+0

こんにちはジム、私は同じに置き換え、なぜ「\\\\\\\\」を理解したいと思いますバックスラッシュは何もない。そのメリットは何ですか?意図的なことは何ですか? –

関連する問題