如何只允许 PHP 从我的服务器下载图像?

Posted

技术标签:

【中文标题】如何只允许 PHP 从我的服务器下载图像?【英文标题】:How to only allow PHP to download images from my server? 【发布时间】:2021-09-01 17:34:27 【问题描述】:

我有一个服务器,其中包含一个用于下载图像的简单 php 文件和一个包含这些图像的文件夹。

<?php

$filepath = "myFiles/" . $_POST["file"];
if (file_exists($filepath)) 
    $file = fopen($filepath,"r") or die();
    echo fread($file,filesize($filepath));
    fclose($file);


?>

这个 download.php 文件以及 myFiles 文件夹都位于 www/html/ 文件夹中。

我正在尝试找出一种方法来实现它,以便我的 PHP 脚本可以访问我的图像文件,同时将文件锁定在常规访问者之外。我的问题是,如果我设置了无法通过浏览器查看文件的权限,那么 PHP 脚本也无法访问它们。所以要么两者都有访问权限,要么都没有。

我在正确的轨道上吗?我怎样才能做到这一点,以便我可以使用 PHP 脚本下载我的图像,同时保持图像无法访问?

【问题讨论】:

【参考方案1】:

这不是您可以使用 linux 文件系统权限处理的事情。您可以将 linux 权限恢复为文件最初的权限。

相反,如果您有一个/home 文件夹,我建议您将原始文件隐藏在那里。如果有,请与您的虚拟主机商联系。

否则,如果您必须将所有内容绝对放在www 中,则将文件隐藏在新的子文件夹中,例如“隐藏文件”,并在该文件夹中放置一个.htaccess 文件,以阻止浏览器直接访问这些文件。 .htaccess文件可以是一行文件,里面有Deny From All命令。

这样您的文件将只能通过download.php 代理。

【讨论】:

以上是关于如何只允许 PHP 从我的服务器下载图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止其他网页从我的服务器下载媒体?

如何只允许从我的 iOS 应用程序访问我的 MySQL 数据库? (使用 webapp 作为 db 的网关)

如何从设备中获取 PDF 文件以便能够从我的应用程序中上传?

IOS InAppPurchase 内容从我自己的服务器下载

如何绕过访问控制允许来源?

如何绕过访问控制允许来源?