使用 ftplib 连接时如何检查 FTP 服务器是否允许 TLS?我找到了有关如何使用 TLS 的简单文档,但没有找到有关如何检查它的解决方案。我的脚本应该以任何一种方式连接,但如果可能的话请使用 TLS。
那么我是否只使用 TLS 进行连接,如果失败,我是否可以不使用 TLS 进行连接?我确信一定有更好的方法。
谢谢您的帮助。
请注意,仅尝试加密与根本不使用任何加密一样糟糕。也许更糟糕的是,因为它给人一种安全的印象,而实际上根本没有。
当您遭受 MITM 攻击时,攻击者会将 TCP 流量转移给他/她并模拟加密拒绝,使您将凭据纯文本直接发送给攻击者。
无论如何:
FTP_TLS.auth
,检查是否抛出。
secure=False
。
如果服务器支持 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
的作用)并没有什么问题。