在网站上传各种文件是否安全?

我们有一个网站,允许用户上传文件。现在,如果我允许用​​户上传所有的文件扩展名,而不限制它是安全的吗?我只限制文件大小高达1GB。 给你的advice.we使用amazon s3来存储文件。

允许用户无限制地做任何事情是绝对安全的。

您绝不应该允许用户上传他们可能导致稍后执行的文件。 例如,如果您的服务器安装了PHP,并且用户上传了众多基于PHP的Web漏洞工具包之一(例如C99 shell变体),并且稍后能够让服务器执行它(通过访问该文件的链接)他们将获得完整的或接近完整的控制你的网站/服务器。

这不仅仅是你需要担心的PHP。 底层Web服务器可以或可能执行的任何文件types应该被禁止或以阻止执行的方式接收。

即使您过滤掉.php或.py等文件扩展名,仍然存在服务器在访问时尝试执行文件的风险。 一个常见的策略是攻击者将一个允许的文件扩展名(例如.jpg)附加到文件名中(例如,你有c99.php.jpg ),根据服务器configuration,它仍然可以作为PHP执行服务器。 如果您运行的是类Unix操作系统,那么采取一个很好的措施就是将上传的文件明确标记为不可执行。

不要让你的用户做得比他们需要的多。 在这种情况下,你还没有指定他们上传文件的原因 – 这将部分决定你应该在文件上加什么限制。 (例如,如果你有一个处理文档的网站,不要让你的用户上传应用程序(.exe),限制到一个可接受的文档MIMEtypes集)。

我build议更重要的考虑是上传之后他们做了什么。 例如,上传脚本可能是完全正确的 – 如果脚本将被显示为文本(例如GitHub),而不是用户可以访问该文件并在服务器上执行该文件。 同样,上传到S3,您需要确保您的用户不能直接访问他们的文件,否则很容易上传一个恶意文件,并使用您的S3帐户服务。

如果用户不能执行这些文件,不能直接访问他们,也不能将他们发送给其他人(即他们只能存储文件并且必须login才能检索),那么就不需要太多的限制。