使用安全性上传PHP中的任何文件

问题描述 投票:0回答:1

我想上传中心,我允许上传所有文件(甚至.php,.bat,....)但我必须做一些无法运行的事情,例如,用户上传'index.php'' site.com/20190520/52.php'地址然后我想如果每个人都去'site.com/20190520/52.php'PHP代码实际上没有运行,每个人都只能下载并且无法运行。

另一个例子:我在'https://cdn.discordapp.com/attachments/433604751326838794/555138662237732894/a.html'上传'a.html'如果你去这里它没有运行我想要那样做。

提示:我认为我们应该更改文件头但是如何?

php file security upload header
1个回答
0
投票

正如所建议的那样,您可以将其存储在私人目录中,最好是在服务器的WEB_ROOT之外的某个位置。这种方法需要考虑的一些事项。

  1. 确保为该目录正确设置了文件系统权限。
  2. 处理文件请求时,site.com/20190520/52.php确保您正在防止目录遍历。即确保攻击者不能像site.com/20190520/../../../../../../etc/passwd那样做
  3. 除非每个人都可以访问每个文件,否则请务必考虑如何计划对请求进行身份验证/授权。

您也可以考虑从系统级别进行此操作。将文件存储在专用目录中,并在将为文件提供服务的子域上设置单独的Web服务器(vhost等)。它可以配置为不执行任何文件。您的Web服务器(nginx,apache等)将决定您如何配置它。

另一个想法可能是考虑利用CDN服务。这些服务会向您公开API,因此您的用户上传文件,您可以在服务器上获取该文件并将其发送到CDN。根据您正在寻找的性能,这可能是最简单,最快速的选项,可以很好地扩展。

© www.soinside.com 2019 - 2024. All rights reserved.