当我使用ftplib连接时,如何检查FTP服务器是否允许TLS?我找到了关于如何使用TLS的简单文档,但没有关于如何检查它的解决方案。我的脚本应该以任何一种方式连接,但如果可能的话使用TLS。
所以我只是使用TLS连接,如果失败,我没有?我相信一定有更好的方法。
感谢您的帮助。
答案 0 :(得分:1)
请注意,仅尝试加密,与完全不使用任何加密一样糟糕。甚至更糟糕的是,因为它给人一种安全感,而没有。
当您受到MITM攻击时,攻击者会将TCP流量转移给他/她并模拟加密拒绝,这样您就可以将您的凭据直接发送给攻击者。
反正:
致电FTP_TLS.auth
,检查是否抛出。
如果服务器支持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
所做的事情)并没有错。