我想上传中心,我允许上传所有文件(甚至.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'如果你去这里它没有运行我想要那样做。
提示:我认为我们应该更改文件头但是如何?
正如所建议的那样,您可以将其存储在私人目录中,最好是在服务器的WEB_ROOT之外的某个位置。这种方法需要考虑的一些事项。
site.com/20190520/52.php
确保您正在防止目录遍历。即确保攻击者不能像site.com/20190520/../../../../../../etc/passwd
那样做您也可以考虑从系统级别进行此操作。将文件存储在专用目录中,并在将为文件提供服务的子域上设置单独的Web服务器(vhost等)。它可以配置为不执行任何文件。您的Web服务器(nginx,apache等)将决定您如何配置它。
另一个想法可能是考虑利用CDN服务。这些服务会向您公开API,因此您的用户上传文件,您可以在服务器上获取该文件并将其发送到CDN。根据您正在寻找的性能,这可能是最简单,最快速的选项,可以很好地扩展。