如何在Python中检查FTP服务器是否提供TLS支持?

问题描述 投票:0回答:1

使用 ftplib 连接时如何检查 FTP 服务器是否允许 TLS?我找到了有关如何使用 TLS 的简单文档,但没有找到有关如何检查它的解决方案。我的脚本应该以任何一种方式连接,但如果可能的话请使用 TLS。

那么我是否只使用 TLS 进行连接,如果失败,我是否可以不使用 TLS 进行连接?我确信一定有更好的方法。

谢谢您的帮助。

python ftp ftplib
1个回答
1
投票

请注意,仅尝试加密与根本不使用任何加密一样糟糕。也许更糟糕的是,因为它给人一种安全的印象,而实际上根本没有。

当您遭受 MITM 攻击时,攻击者会将 TCP 流量转移给他/她并模拟加密拒绝,使您将凭据纯文本直接发送给攻击者。


无论如何:

如果服务器支持 TLS,则

FTP_TLS.auth
将启用加密,并且
FTP_TLS.login
(即使使用
secure=False
)将继续使用它。如果服务器不支持加密,则
FTP_TLS.login
(带
secure=False
)继续不加密。

请注意,

FTP_TLS.login
(及其
secure
参数)是一个未记录的方法 - 如果您不想使用它,当 FTP
 抛出时,您可以回退到创建一个普通的 
FTP_TLS.auth


要明确检查,您还可以使用

FTP.voidcmd('FEAT')
并在响应中查找
AUTH TLS
(或
AUTH SSL
)。

但是立即尝试

AUTH TLS
/
AUTH SSL
FTP_TLS.auth
的作用)并没有什么问题。

© www.soinside.com 2019 - 2024. All rights reserved.