用于将用户上传的文件发送到远程服务器的传输协议?



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

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

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

我选择哪种协议并不重要,只要它是安全的(FTPS,SFTP,HTTPS(?还是在性能/安全性方面,特别是在用户上传的文件方面,一个比另一个更好?

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

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

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

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

归根结底,这只是您必须做出的设计决策,以上只是在不知道所有情况的情况下想到的几件事,根本不是要考虑的全面事项列表。

相关内容

最新更新