我正在帮助设计一个需要在服务器上安全传输和存储文件的应用程序。该应用程序是用 C# 编写的,但服务器是基于 Linux 的。我应该使用什么协议来传输和存储这些文件,最大为 2 GB?
我已经阅读了一些 sftp 和 ssh。这些会有什么好处吗?
如果您想要使用 .NET 使用最少的组件轻松安全地传输 BIG 文件,您通常会想要使用 FTPES,也称为FTP through Explicit SSL,有时也称为“FTPS”或“FTP-ES”。这是唯一受纯 .NET 方法支持且无需第三方插件的版本。
与 FTPES 不同,使用 SFTP 或 FTP over SSH,您将不得不在您和您的客户端之间手动交换密钥。您还需要第三方库来实现它,因为 .NET 没有 SFTP 的内置功能。
如果您想编写一个客户端来使用 FTPES,您所要做的就是使用 FtpWebRequest 并将EnableSSL 设置为 true。
要避免什么:
不要通过隐式 SSL使用 FTP 。在这一点上它已经被弃用了很多年,应该被认为是过时的。
不要只是对文件进行 PGP 加密,然后通过普通的旧 FTP 传输它们。使用普通的旧 FTP,所有用户名和密码都以明文形式发送,这将很容易让攻击者至少拦截您的 PGP 加密文件。