【问题标题】:How to encrypt credentials while connecting to FTP using Indy?使用 Indy 连接到 FTP 时如何加密凭据?
【发布时间】:2012-12-18 22:19:27
【问题描述】:

最近我注意到在 WireShark 中我可以看到我用于连接到我的 FTP 服务器以上传文件的 FTP 用户名/密码(我相信 Delphi 6 和 Indy 9 或 10)。我想通过加密密码来防止这种情况发生,但我不知道从哪里开始。

您建议如何防止黑客获取凭据?请不要使用任何组件(即使是免费的)或任何需要花钱的东西。

【问题讨论】:

  • 您可以尝试切换到 FTPS 协议,请参阅en.wikipedia.org/wiki/FTPS
  • 不,要使用 FTPS,您需要为您的 TIdFTP 分配正确的 IOHandler 并在登录前建立安全连接。当然,你要连接的服务器必须支持 FTPS。
  • 这里是you might start。而且,Indy 9 doesn't support SSL for FTP,所以如果你使用 Indy 9,如果你想使用 FTPS,是时候升级了。
  • 我创建了一个demo project(虽然在 Delphi 2009 中,但如果你幸运的话,它可能对你有用),它连接并列出了由托管的公共安全 FTP 服务器的根文件夹http://secureftp-test.com.
  • 也可以尝试切换到HTTPS(WebDAV)协议

标签: delphi ftp indy delphi-6


【解决方案1】:

FTP 协议中,您无法加密任何内容,因此凭据以纯文本形式传输,而文件、列表等未加密地传入/传出服务器。

如果您的服务器支持 FTPS,这是通过 SSL 加密连接的普通 普通 FTP 会话,您可以使用您正在使用的相同 TIdFTP 对象来执行此操作,但将默认 IO 处理程序更改为支持 SSL 的,例如 TIdSSLIOHandlerSocketOpenSSL 的一个实例,它使用流行的 OpenSSL 库进行加密。

在代码中是这样的:

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;

【讨论】:

    猜你喜欢
    • 2011-06-02
    • 2014-04-11
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    相关资源
    最近更新 更多