使用 PHP 安全地将密码发送到 LDAP 服务器

Securely send password to LDAP server using PHP

我想做的是设置一个登录屏幕。在允许用户参加测验之前,我收集了用户的凭据并使用 ldap 服务器对其进行了验证。

<?php
session_start();
$user = $_POST['user'];
$domain = 'DOMAIN';
$password = $_POST['password'];
$ldapserver="ldap.example.server";
$ldapport=389;
$ldap = ldap_connect($ldapserver,$ldapport);

if ($bind = @ldap_bind($ldap,"{$user}@{$domain}", $password)){
    $_SESSION["user"] = '$user';
    header('Location: quiz.php');
}
else {
    header('Location: login.html');
}

?>

当我用wireshark嗅探数据包时,我可以清楚地看到用户名和密码。有没有办法在不以明文形式发送密码的情况下绑定到 LDAP 服务器?该网站没有 https。所有者不想购买 SSL 证书,也没有兴趣使用自签名证书。

你的ldap服务器支持ldaps并且有证书吗?那将是执行此操作的最简单方法,并且您的站点不需要证书。您只需稍微更改代码即可。假设您的服务器使用默认的 ldaps 端口:

$ldapserver = 'ldaps://ldap.example.server';
$ldapport = 636;