2013-04-15 20 views
3

Я использую хэш для шифрования и расшифровки моих паролей, которые я отправляю в конструкцию cass. Exampled ниже:Безопасное подключение к серверу 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 через SSL? – Michael

+0

@Michael У нас нет формы сертификата ssl для этого –

+0

Это ваш собственный LDAP (часть вашего развертывания продукта)? В этом случае вы можете создать самозаверяющий сертификат. – Michael

ответ

1

Это совершенно бессмысленно, я боюсь.

Это не дает вам дополнительной безопасности с точки зрения установления соединения с сервером, поскольку пароль все еще передается на сервер в его расшифрованной форме. Единственное, что это делает, - это запутать пароль в исходном коде, и я говорю «обфускать», а не «шифровать», потому что вся необходимая информация для дешифрования пароля в исходный текст также содержится в вашем исходном коде.

Это допустимый способ безопасного подключения к моему LDAP-серверу с использованием протокола TCP?

No. Если вы хотите получить защищенное соединение, вам необходимо использовать LDAP через SSL.