【问题标题】:Transfer protocol for sending user uploaded files to a remote server?将用户上传的文件发送到远程服务器的传输协议?
【发布时间】:2019-08-09 19:17:25
【问题描述】:

我习惯于使用用户上传的文件到同一台服务器,并将我自己的文件传输到远程服务器。但不会将用户上传的文件传输到远程服务器。

我正在寻找在这方面选择传输协议的最佳(行业)实践。

我的应用程序在 Linux 服务器上运行 Django,文件位于 Windows 服务器上。

只要安全,我选择哪种协议(FTPS、SFTP、HTTPS)都没有关系?或者在性能/安全性方面比另一个更好特别是在用户上传的文件方面?

请不要链接到解释协议差异的问题,我是在用户上传文件的上下文中专门询问的。

【问题讨论】:

    标签: security ftp upload sftp ftps


    【解决方案1】:

    只要您选择提供(相互)身份验证、加密和消息身份验证的标准协议,在安全方面并没有太大区别。如果所有这些都是由您选择的协议中的一层 TLS 提供的(就像在您的所有示例中一样),您就不会在设计级别上犯大错误(但实现是关键,许多安全错误是实现的错误,而不是设计缺陷)。不过,此类协议在支持的算法列表中可能因不同目的而有所不同。

    性能方面可能存在相当大的差异,这取决于您要优化的目标。如果您选择 HTTPS,您将无法长时间保持连接打开,并且很可能必须为每个传输的文件承担整个连接设置与身份验证和所有内容的开销。 (好吧,您实际上可以保持 https 连接打开,但对于此类文件上传来说,这将是一个非常自定义的实现。)选择 FTPS/SFTP,您将能够保持连接打开并传输任意数量的文件,但是会可能必须有更复杂的错误处理逻辑(有时连接终止而底层套接字暂时不知道它等等)。所以简而言之,我认为 HTTPS 会更有弹性,但对于许多小文件来说,安全的 FTP 会更有性能。

    这也是一个架构问题,通过使用 HTTPS,您将能够在您的应用程序代码中实现所有这些,而像 FTP 这样的东西将意味着依赖于外部组件,这从操作的角度来看可能很重要(想想关于这将如何实际部署以及是否已经有一个 devops 功能来管理正确的操作)。

    归根结底,这只是您必须做出的设计决定,以上只是在不了解所有情况的情况下想到的一些事情,而不是要考虑的事项的完整列表。

    【讨论】:

    • 感谢您的详尽回答
    猜你喜欢
    • 2016-11-25
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多