我正在制作一个允许用户上传任何类型文件的网站。所有文件都存储在“files/”文件夹中。我希望用户能够查看和下载该文件夹中的任何文件,但不能执行它们。
一些文件,如 JPG 文件,很简单:众所周知,浏览器有一个内置系统来显示它们。
其他文件,如 PDF 文件,无法直接显示,因此浏览器所做的就是提示用户下载屏幕。那也很好。
但是,其他文件(如 PHP 文件)会带来问题。当我打开一个这样的文件时,如果我不小心,它就会被执行。例如,如果文件包含
<?php echo 'ok'; ?>
然后当我转到“files/myphpfile.php”时,我看到的只是“ok”,而不是文件的内容。我想这不仅会发生在 PHP 文件中,而且还会发生在我的服务器可以执行的任何其他文件类型(例如 ASP 文件,我想)中。
我需要的是阻止用户执行文件,这样当他们转到“files/myphpfile.php”时,他们要么看到文件内容,要么浏览器提示他们下载屏幕。理想情况下,这将是一个通用解决方案,不需要我构建服务器可执行的每种文件类型的列表。
对我来说,最合理的做法是将文件权限设置为 644,这样用户就只能读取文件。但这样做之后,PHP 文件会继续执行。