How to encrypt credentials while connecting to FTP using Indy?
最近我注意到在wireshark中我可以看到我的ftp用户名/密码,我用来连接到我的ftp服务器来上传一个文件(delphi 6和indy 9或10,我相信)。我想通过加密密码来防止这种情况,但我不确定从哪里开始。
你建议如何阻止黑客获取证书?请不要使用组件(甚至免费组件)或任何需要花钱的组件。
在纯FTP协议中,您没有加密任何内容的方法,因此凭证以纯文本形式传输,文件、列表等在服务器之间不加密。
如果您的服务器支持ftps,这是一个普通的通过SSL加密连接的ftp会话,那么您可以使用正在使用的相同tidtp对象进行此操作,但可以将默认IO处理程序更改为支持SSL的处理程序,例如,tidsliohandlersocketopenssl的一个实例,该实例使用流行的openssl库进行加密。
在代码中,它看起来像:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | var ftp: TIdFTP; ssl: TIdSSLIOHandlerSocketOpenSSL; begin ftp := TIdFTP.Create(); try ssl := TIdSSLIOHandlerSocketOpenSSL.Create(ftp); ftp.IOHandler := ssl; ftp.Host := 'ftp.myserver.com'; ftp.Username := 'myuser'; ftp.Password := 'mypass'; ftp.Connect; DoWhateverYouWantToDoWithThe(ftp); AndUploadMoreFiles(ftp); ftp.Disconnect; finally ftp.Free; end; end; |