如何只允许 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 文件以便能够从我的应用程序中上传?