我的应用程序是通过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下载文件而不暴露这个密码?
谢谢你, 埃文
答案 0 :(得分:4)
不。 FTP明确地发送凭证。您必须使用SFTP或类似的东西。
答案 1 :(得分:1)
没有。但是,如果有人获得凭据,您是否可以配置仅用于FTP并且不是管理员的帐户,以至少限制您的曝光率?
FTP没有安全的身份验证机制。您需要使用其他东西(SFTP或SCP或HTTPS)。
答案 2 :(得分:1)
如果您可以自己配置FTP服务器或安装另一台服务器,则会有一个名为FTPS的协议,该协议使用TLS / SSL来保护FTP上的连接。维基百科有一个显示功能的FTP server software列表。根据建议,HTTPS可能更容易。
任何未加密的连接都会以明文形式发送密码。