让用户将巨大的文件上传到网站

Flo*_*ciu 10 php security upload

所以我需要一些建议.我正在建立一个仅供学术界使用的网站,仅限于一小部分人.本网站的唯一目的是作为文件上传的GUI.这些文件的大小通常介于10-12GB之间.

通过做reasearch,我发现我可以使用php脚本上传文件并更改php.ini中的最大文件上传大小(但我找不到最大文件上传大小限制).我有几个问题.

1)我是否需要以某种方式找出一种方法来维护网站和用户之间的连接,以避免诸如连接超时之类的事情?如果是这样,是否足以在服务器端执行此操作?或者这些使用者将使用的Web浏览器也存在问题(Web浏览器会超时连接)吗?---我问这个是因为这些上传需要花费大量时间.

2)我必须考虑哪些安全问题?到目前为止,我发现并考虑了以下内容:

  1. 限制只从多个子网访问网站(我想要的学术用户)

  2. 将要上传到网站的文件是一种特殊的格式,由唯一的标题组成) - 从而检查这些标题.

  3. 使用.htaccess禁用CGI exectuions

  4. 移动www根文件夹之外的所有上传

  5. 可能会发现反病毒检查这些文件

  6. 最初所有这些用户都将进行身份验证以访问此网站 - 这也是我必须考虑的第一个问题 - 他们可以保持多长时间登录以及如何控制它?

本网站的安全性方面对其开发至关重要,当您使用12 GB文件时,这是一个非常棘手的问题.

这些是我认为难以实现的一些事情,但我相信还有更多.你们认为我还应该考虑什么?如果还有其他实施方法,请不要犹豫.

附加信息:

  • 截至目前,这些用户使用scp将文件上传到此服务器
  • 我的社区非常信任这些用户,但安全性是这个社区的头号座右铭 - 很少有东西对公众开放,而且存储在这些服务器上的一些信息无法被压缩
  • 将要上传到服务器的文件基本上是关于真人的机密数据 - 所以我必须考虑诸如数据包嗅探之类的事情.

谢谢你们,我知道这是很多东西,但任何帮助都会非常感激.

psy*_*nny 10

你不可能通过PHP上传一个大文件.无论你投入多少服务器资源(内存)(并相信我,你需要很多!),PHP中有一个限制将阻止你这样做.

在php.ini中,有一个名为"post_max_size"的变量会影响您可以发送到服务器的最大数据大小.此变量是无符号的32位整数,这意味着您不能高于4,294,967,295.

一个好的解决方案是使用Flash将文件拆分成几个小部分,然后进行文件上传.我找到了一个适合您的库:http://www.blog.elimak.com/2011/08/uploading-large-files-with-flash-splitting-the-bytearray-in-chunks/

如果您遇到PHP中的内存问题,只需缩小块.

祝好运!

编辑:要回答你的第二个问题,你已经掌握了大部分问题.如果您担心数据可能在途中被劫持,请使用SSL进行转移.对于身份验证,请考虑使用OAuth,并确保在传输不活动时撤消用户的访问令牌.添加php_flag engine off到.htaccess文件中以防止上载的PHP文件运行.服务器病毒扫描程序定期运行也不是一件坏事:)