我正在将来自用户的文件(用于新闻文章)上传到我基于 linux 的站点上的特定文件夹。根据我在这里看到的其他问题,我已将目录设置为 755 ......并且删除执行权限会导致图像没有被提供(抛出 403)。
但是......我真的不明白这里的安全含义。如果我将文件夹保留为755,那是不是意味着用户可以通过我的上传表单上传脚本,然后执行它???
我正在将来自用户的文件(用于新闻文章)上传到我基于 linux 的站点上的特定文件夹。根据我在这里看到的其他问题,我已将目录设置为 755 ......并且删除执行权限会导致图像没有被提供(抛出 403)。
但是......我真的不明白这里的安全含义。如果我将文件夹保留为755,那是不是意味着用户可以通过我的上传表单上传脚本,然后执行它???
1 = execute / access directory
2 = write
4 = read
开头的 7 表示所有者可以执行、读取和写入。5 表示执行和读取的 1+4。
5 在中间位置表示组员可以读 end execute,在最后一个位置表示每个人都可以读和执行。
如果运行 Web 服务器的用户拥有设置为 755 的文件和目录,如果您在脚本中提供此类功能,用户可以上传到该目录并从中读取。
在您确定文件安全之前,不应将用户上传的文件放在公众可以访问的目录中。PHP/tmp/
最初将它们放入。
然而,PHP 文件不是直接执行的,它们只是被读入运行它的 PHP 中。因此,在这种情况下,执行标志没有任何意义。如果要限制在目录中运行 PHP 脚本,可以使用.htaccess
-file。
linux(或我知道的任何其他操作系统)上的图像和其他文件类型没有单独的权限。任何图像都需要“执行”权限才能查看。
您必须限制您的用户仅在脚本端上传图片(例如,PHP 上传脚本必须在上传前检查文件扩展名)。我不能推荐任何确切的东西,因为您没有提到用户如何将图像上传到服务器。无论如何,在上传权限之前必须检查它对您没有帮助。
chmod 命令分别设置所有者/组/世界的权限。r 等于 4,w 2 和 x for execute 是 1。您将 world 设置为 5 意味着用户能够阅读和执行。如果您希望使用户权限可写,则应设置最后一位数字 7。