2013-04-15 207 views
3

我正在使用散列來加密和解密我發送給cass構造的密碼。所示例如下:安全連接到LDAP服務器

public static function HashPassword ($Password){ 
     $salt = self::$Salt; 
     return trim 
      (base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $salt, $Password, MCRYPT_MODE_ECB, mcrypt_create_iv(
      mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)))); 
    }//Get hashed Password 

然後解密這是一個protected static function

protected static function DecryptPassword($Password){ 
     $salt = self::$Salt; 
     return trim 
       (mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $salt,base64_decode($Password), MCRYPT_MODE_ECB, mcrypt_create_iv(
       mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))); 
    } // Decrypt the password 

我然後調用通過連接:

$Connection = LDAP::Connect('LDAPSERVER','LDAPLOGIN','onVidHn5r4WNyxzlDHD8TvUY9AjyiHg+ZC5PoOhIXkU='); 

爲了安全起見,我已經implimented一個虛擬密碼並隱藏我的服務器憑據。

的連接功能:

public static function Connect($Host,$Username,$Password){ 
     self::$Host = $Host; 
     self::$Admin = $Username; 
     //Assign to global variables to be used throughout this framework 
      $Password = self::DecryptPassword($Password); 
     self::$Password = $Password; // Assign the decrypted password 

     $LDAPServer = ldap_connect($Host); 
     $Connect = ldap_bind($LDAPServer,$Username,$Password); 
     if (!$Connect){ 
      die ("Cannot Connect To LDAP Server"); 
     } 
    } 

我的總的問題是,這是安全與祕密鹽我的API傳輸口令的有效方法是什麼?

這對我傾向於不輸入密碼以純文本:

ldap_bind('host','[email protected]','PlainTextPassword'); 

以上是一個例子,它給我的偏好是我不能接受的。

所以這是一個有效的方法來安全地連接到我的LDAP服務器使用TCP協議?

雖然這個問題的長相,我可以證實,我可以 成功地連接到我的LDAP服務器提供正確的憑據 輸入;所以這不是問題。我很好地從安全 方面問,沒有我的安全知識,我不希望妥協 數據或服務器以任何形狀或形式,因此,爲什麼這是在 生產階段,只有一個用戶可以訪問是我自己。

+0

爲什麼你不想使用LDAP over SSL? – Michael

+0

@Michael我們沒有任何形式的SSL證書來執行此操作 –

+0

它是您自己的LDAP(您的產品部署的一部分)嗎?在這種情況下,您可以創建一個自簽名證書。 – Michael

回答

1

這是完全沒有意義的,我很害怕。

由於密碼仍以解密形式傳輸到服務器,因此這不會給您建立與服務器的連接方面的任何額外安全性。唯一能做的就是在源代碼中對密碼進行模糊處理 - 並且我說「混淆」而不是「加密」,因爲將密碼解密爲其源文本的所有必要信息都包含在您的源代碼中。

所以這是一個有效的方法來安全地連接到我的LDAP服務器使用TCP協議?

否。如果您想要安全連接,則需要使用基於SSL的LDAP。