我有一个客户端,一个REST API服务器和一个LDAP服务器。我希望客户端使用LDAP身份验证对API进行身份验证,但我希望避免发送明文密码。
如何使用哈希而不是明文密码执行PHP LDAP身份验证?
答案 0 :(得分:5)
以这种方式这是不可能的。因此,您不希望在客户端存储明文密码,只是哈希,并且只向服务器发送哈希值。现在没有人可以通过以下方式获得真实密码:a)阅读客户端配置文件或b)使用wireshark等网络跟踪工具。但是,在这种情况下,服务器无法知道客户端是否知道密码或只知道哈希,因此它只信任哈希。这意味着任何可以获取哈希值的人都可以使用它而不是密码,因此您根本不会获得任何安全性。
正确的做法是以支持ssl加密的方式设置ldap服务器,并告诉php在连接时使用ssl加密。来自PHP文档:
<?php
$ldaphost = "ldaps://ldap.example.com/";
$ldapconn = ldap_connect( $ldaphost )
or die( "Cannot connect" );
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
?>
请注意网址中的ldap * s *。
要使用SSL,您还需要一个证书 - 否则客户端不知道服务器是真正的服务器,并且可以将凭证发送到冒充真实服务器的其他服务器。