1

我创建了一个 Delphi 2010 应用程序。它被该地区的许多公司使用,从受信任的用户到不受信任的用户。应用程序在 MD5 加密密码后面使用 MySQL 对用户进行身份验证。在此之后,应用程序需要通过 ftp 上传和下载许多文件。

事实是:任何网络嗅探器(例如 Ethereal,也称为 WireShark)都可以从我的应用程序的 ftp 部分获取我的普通用户和密码。也可以获取加密密码,任何人都可以使用任何 ftp 应用程序登录到我的服务器并做出不愉快的事情。

[TindyFTP]用于管理 FTP 连接本身。这个对象不支持 SFTP,我认为这可能是我问题的结束。

DEVART 的[tMyMac]用于管理 MYSQL 连接。

我现在的意思是:这是使用 SSH 隧道控制(ftp 和 mysql)事务类型的 IO 处理程序到我的应用程序的好方法吗?我现在正在使用DEVART 的SecureBridge进行一些测试,它与 MyDAC 组件和 TIndy 兼容。

我是否只需要连接到SSH 隧道并使用 mysql 和 ftp 进行处理?使用 SSH 隧道时是否还需要加密 ftp 密码?对于 MySQL 部分,当我尝试使用 WireShark 拦截密码时,密码似乎被加密或混淆了。

感谢从那时起让我知道您的想法,而无需更改已完成 99% 的程序的所有结构 :)

谢谢,乔纳森

4

2 回答 2

1

Indy 10 中的 TIdFTP 在连接级别 (SSL/TLS) 和登录凭证级别 (SASL) 都支持加密。

于 2010-10-27T00:37:06.600 回答
1

首先,您需要确定您应该/可以使用什么协议。FTP 不是 SFTP,通过 SSH 的 FTP 也没什么意义(尽管有可能)。让我们回顾一下这些选项:

  1. 使用 FTPS(基于 SSL 的 FTP)。要求您的 FTP 服务器具有 SSL 证书,否则它是一个 vialbe 选项。缺点:不保护 MySQL 连接。
  2. 通过 SSH 隧道使用 FTP。如果他可以使用 SFTP,不明白为什么会这样做。Indy 和我们的SecureBlackbox 产品可以通过 SSH 进行 FTP 。
  3. 使用 SFTP(SSH 文件传输协议)传输文件并使用 SSH 端口转发来保护 MySQL 连接。从技术上讲,可以通过一个已建立的 SSH 会话同时运行 SFTP 子系统和端口转发,我们的SecureBlackbox支持这一点。不过,我不了解 DevArt 的东西,因为他们的 SSH/SFTP 客户端还很年轻,可能有一定的局限性。

如果你有一个 linux 服务器(MySQL 建议你这样做),那么它有 OpenSSH 作为 SSH 服务器,而 OpenSSH 有内置的 SFTP 服务器。如果您在 Windows 上运行 MySQL,您将很难在 Windows 上使用 OpenSSH 端口,而 Bitvise SSH 服务器将是一个更好的选择(我们自己在内部服务器上使用它)。

如果 SFTP 身份验证和加密是在 SSH 级别上执行的,您无需费心进一步保护用于身份验证的密码 - 它已经使用 SSH 进行了保护。不过,您需要关心的是验证服务器向客户端提供的 SSH 密钥。您可以通过在客户端模块中存储服务器密钥的副本来做到这一点(请记住,您可能需要不时更换服务器密钥,因此不要在客户端模块中对其进行硬编码)。

如果您决定使用 FTP-over-SSH 路由(虽然我不明白您为什么需要这个),您仍然不需要保护 FTP 密码,因为您将通过安全的 SSH 隧道运行 FTP。

于 2010-10-26T19:39:03.753 回答