【问题标题】:User image uploading用户图片上传
【发布时间】:2017-02-07 01:34:03
【问题描述】:

我目前正在开发一个网络应用程序。在一些地方,我允许用户出于各种原因上传图片。现在该网站已经上线(托管在 GoDaddy 上),我似乎无法找到放置正在上传的图片的最佳位置。我确实有一个运行我的数据库的外部服务器,但它没有为 FTP 设置,所以我不能轻松地使用我的 PHP 后端来上传和检索它们。在我看来,将它们直接存储在 GoDaddy 上似乎也不是一个好主意。

我应该创建一个 FTP 服务器来执行此操作吗?还是有更好的选择。

【问题讨论】:

  • 根据每页加载的图像数量,我会考虑使用 CDN。你有什么顾虑,你没有真正提到。
  • 当您对风险没有准确的了解时,不将它们保存在网络服务器上可能是明智之举,但是关于如何存储图像的任何决定主要是由何时以及如何检索和使用内容。你没有在你的问题中解决这个问题。
  • 还是不知道是什么问题?如果您想阻止直接访问它们,您可以将它们移出目录并让 php 读取文件并提供它们。如果你不想让 Godaddy 服务器超载,那么你会考虑使用 CDN。
  • @M.Alnashmi 现在将其保留在 GoDaddy 服务器上似乎是一个可行的选择。它现在应该重载它,我可以通过 PHP 使用 FTP 来访问它们。谢谢
  • @urnotsam 所以直接访问是您关心的问题?

标签: javascript php file-upload ftp web-hosting


【解决方案1】:

如果您想将图像存储在远程系统上,那么您确实需要某种方式来传输它们。具体来说,这意味着您需要设置和操作服务器,并且需要使用客户端来触发实际传输。这将您可能的选择限制为在您的 wen 托管平台上可用的那些客户端实现。

FTP 就是这样一个协议,要使用它,你显然需要一个FTP 服务器。然而FTP 的问题在于它是来自一个早已消失的地区的恐龙。它是 1970 年的遗留物。完全过时了。它是为与当今互联网面临完全不同挑战的网络拓扑而设计的。事实上,它确实会产生很多问题。首先,它不加密传输的数据。显然,这是一个巨大的隐私问题。这些天确实有提供加密的版本。然而,称为FTPS 的协议变体仅加密通信通道,而所有其他通道,所有用于传输实际文件的通道,均未加密。该协议的第二个大问题是防火墙设置需要相当多的努力。它为每次传输打开一个单独的网络连接,这是低效的。预计将向互联网开放单独的端口。防火墙管理员的噩梦。甚至可能在某些情况下无法使用该协议,例如几乎不可能将FTPport forwarding 场景结合使用。这就是为什么FTP 在我眼中对于你的计划来说并不是一个好的选择。尽管如今它确实仍在广泛使用。

一个直接的替代方案是“现代替代”,SFTP 协议。尽管被称为相似并且确实服务于完全相同的目的,但从技术角度来看,它是一个完全独立的协议。它基于安全外壳协议 (SSH) 运行,服务器也被广泛传播和验证。它提供强大的加密,为手头任务所需的所有活动提供手段,并且通过查看网络设置更容易配置。所有流量,因此控制负载流量通过单个网络连接发送。大多数实现都是作为开源项目开发的,具有安全性和对出现的潜在问题的快速反应的所有好处。另一个优点:它允许基于非对称密钥对而不是密码的身份验证,这进一步提高了安全性。这个协议是我个人的选择。还因为您无论如何都需要操作 ssh 服务器来管理您的系统。这使占用空间小;-)

还有其他选择,例如 WEBDAVS。但它们鲜为人知,不太容易设置。这就是为什么我建议不要进行此类实验,除非有非常具体的原因。

最后一个选项是网络共享。这允许将系统之间的文件传输视为本地文件操作,这显然是一个很大的优势。这种连接可以加密,但并不是真正为长距离通信而设计的。所以这取决于你的具体情况。这里的典型选择是NFSSMB/CIFS (Samba)。可能还可以使用一些较新的“分布式文件系统”。但是由于缺乏个人经验,我不能说太多;-)我看到这个选项的最大问题是它需要对客户端系统(所以你的网络托管平台)的特权访问,因为你必须将共享安装到本地文件系统,无论是系统级别还是用户级别。这通常在廉价的网络托管方案中不可能实现。

【讨论】:

  • 感谢您深思熟虑的答案。我将使用 SFTP,因为它不需要在我现有的服务器上进行额外设置,而且更安全。
【解决方案2】:

由于担心阻止直接访问,最好的解决方案是将图像移出公共文件夹,以防止 apache/nginx 提供文件。

然后你会让 php 读取请求的文件并将内容流式传输给用户。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 2016-12-13
    相关资源
    最近更新 更多