FTP下载不够安全 - 密码出现在小提琴手中

时间:2011-09-24 00:37:12

标签: c# security ftp

我的应用程序是通过FTP从我的服务器下载客户端。在这种情况下我必须使用FTP,因为我在我的服务器上禁止公开使用该文件;因此,下载文件的唯一方法是作为管理员,我可以通过向FTP客户端提供用户名和密码来完成。但是,这样做的问题在于,通过使用Fiddler,我可以“嗅探”从c#发送到FTP客户端的密码。

代码:

var downloadFileRequest = (FtpWebRequest)WebRequest.Create("ftp://" + Public.ftp_host + "//" + fileName);
            downloadFileRequest.Credentials = new NetworkCredential(Public.ftp_username, Public.ftp_password);
            downloadFileRequest.Method = WebRequestMethods.Ftp.DownloadFile;
            downloadFileRequest.UseBinary = true;

            ServicePoint sp = downloadFileRequest.ServicePoint;
            sp.ConnectionLimit = 2;

                var downloadResponse = (FtpWebResponse)downloadFileRequest.GetResponse();

                    Stream downloadStream = downloadResponse.GetResponseStream();

有没有办法通过FTP下载文件而不暴露这个密码?

谢谢你, 埃文

3 个答案:

答案 0 :(得分:4)

不。 FTP明确地发送凭证。您必须使用SFTP或类似的东西。

答案 1 :(得分:1)

没有。但是,如果有人获得凭据,您是否可以配置仅用于FTP并且不是管理员的帐户,以至少限制您的曝光率?

FTP没有安全的身份验证机制。您需要使用其他东西(SFTP或SCP或HTTPS)。

答案 2 :(得分:1)

如果您可以自己配置FTP服务器或安装另一台服务器,则会有一个名为FTPS的协议,该协议使用TLS / SSL来保护FTP上的连接。维基百科有一个显示功能的FTP server software列表。根据建议,HTTPS可能更容易。

任何未加密的连接都会以明文形式发送密码。