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

时间:2016-05-16 14:53:26

标签: python ftp ftplib

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

所以我只是使用TLS连接,如果失败,我没有?我相信一定有更好的方法。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

请注意,仅尝试加密,与完全不使用任何加密一样糟糕。甚至更糟糕的是,因为它给人一种安全感,而没有。

当您受到MITM攻击时,攻击者会将TCP流量转移给他/她并模拟加密拒绝,这样您就可以将您的凭据直接发送给攻击者。

反正:

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

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

要明确检查,您还可以使用FTP.voidcmd('FEAT')并在回复中查找AUTH TLS(或AUTH SSL)。

但是,立即尝试AUTH TLS / AUTH SSLFTP_TLS.auth所做的事情)并没有错。