3

我正在使用哈希来加密和解密我发送到 cass 构造的密码。示例如下:

 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=');

出于安全原因,我使用了一个虚拟密码并隐藏了我的服务器凭据。

连接功能:

 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','user@server','PlainTextPassword');

以上是一个例子,在我看来,这是我不能接受的。

那么这是使用 TCP 协议安全连接到我的 LDAP 服务器的有效方法吗?

虽然这个问题的外观,但我可以确认我可以成功连接到我的 LDAP 服务器,只要输入正确的凭据;所以这不是问题。我只是从安全方面询问,没有我的安全知识,我不希望以任何形式或形式损害数据或服务器,因此为什么这是在生产阶段并且只有我自己的一个用户可以访问。

4

1 回答 1

1

恐怕这完全没有意义。

在建立与服务器的连接方面,这不会为您提供任何额外的安全性,因为密码仍以其解密形式传输到服务器。这样做的唯一一件事就是混淆源代码中的密码——我说的是“混淆”而不是“加密”,因为将密码解密为源文本的所有必要信息也包含在源代码中。

那么这是使用 TCP 协议安全连接到我的 LDAP 服务器的有效方法吗?

不可以。如果您想要安全连接,则需要使用 LDAP over SSL。

于 2013-04-16T15:29:52.060 回答