2013-04-15 265 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。