具有 ftp_connect 功能的 AUTH TLS/SSL
AUTH TLS/SSL with ftp_connect function
根据 RFC 2228,AUTH
是一个 FTP 命令,可以与其中一种身份验证机制(TLS
或 SSL
)一起使用,为了确保数据通道和控制通道的安全。
我想知道我是否可以将此命令与具有 ftp_connect
功能的非安全连接(常规 FTP)一起使用,如下所示:
$conn = ftp_connect('hostname');
if (is_ressoure($conn)) {
$command = ftp_raw($conn, 'AUTH TLS');
$responseCode = (int) substr($command[0], 0, 3);
if ($responseCode === 234) {
// AUTH TLS success
login(); // secured
} else { // if TLS rejected try SSL
$command = ftp_raw($conn, 'AUTH SSL');
$responseCode = (int) substr($command[0], 0, 3);
if ($responseCode === 234) {
// SSL authentication success
login(); // secured
} else {
// Cannot secure the data channel and command channel
die();
}
}
}
我知道 AUTH
命令与 ftp_ssl_connect
的显式 FTP/SSL 连接一起使用,我很困惑,我想知道这个命令是否对常规 FTP连接?
提前致谢!
AUTH TLS
/SSL
将连接加密。如果您将它与普通 ftp_connect
连接一起使用,连接将停止工作。服务器将期望加密命令(并将发送加密响应),客户端(PHP FTP 模块)将继续发送未加密命令(并将期望未加密响应)。他们不会互相理解。实际上它甚至永远不会达到那个目的,因为在响应 AUTH
之后,服务器将启动 TLS 握手并且会立即失败。
根据 RFC 2228,AUTH
是一个 FTP 命令,可以与其中一种身份验证机制(TLS
或 SSL
)一起使用,为了确保数据通道和控制通道的安全。
我想知道我是否可以将此命令与具有 ftp_connect
功能的非安全连接(常规 FTP)一起使用,如下所示:
$conn = ftp_connect('hostname');
if (is_ressoure($conn)) {
$command = ftp_raw($conn, 'AUTH TLS');
$responseCode = (int) substr($command[0], 0, 3);
if ($responseCode === 234) {
// AUTH TLS success
login(); // secured
} else { // if TLS rejected try SSL
$command = ftp_raw($conn, 'AUTH SSL');
$responseCode = (int) substr($command[0], 0, 3);
if ($responseCode === 234) {
// SSL authentication success
login(); // secured
} else {
// Cannot secure the data channel and command channel
die();
}
}
}
我知道 AUTH
命令与 ftp_ssl_connect
的显式 FTP/SSL 连接一起使用,我很困惑,我想知道这个命令是否对常规 FTP连接?
提前致谢!
AUTH TLS
/SSL
将连接加密。如果您将它与普通 ftp_connect
连接一起使用,连接将停止工作。服务器将期望加密命令(并将发送加密响应),客户端(PHP FTP 模块)将继续发送未加密命令(并将期望未加密响应)。他们不会互相理解。实际上它甚至永远不会达到那个目的,因为在响应 AUTH
之后,服务器将启动 TLS 握手并且会立即失败。