gpt4 book ai didi

php - 允许用户在 webroot 之外下载文件

转载 作者:可可西里 更新时间:2023-11-01 13:46:11 26 4
gpt4 key购买 nike

您好,我使用 PHP 允许用户上传文件,出于安全原因,我将它们放在 webroot (/var/www) 文件夹之外的文件夹中。它位于文件夹/var/uploads 中。用户上传特定记录的文件。一旦上传的文件被移动到上传文件夹,附件的地址就会存储在数据库中。现在,每当用户检查记录时,将显示特定记录的附件以供下载。

因为它们不在 webroot 中,所以我无法下载它们,因为它们的 url 是

http://localhost/var/uploads/attachment.txt

我们是否有解决方案,或者可下载文件夹应该是 webroot 的子目录?

<?php
$con = mysql_connect("localhost","id","pass");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("db", $con);

$result = mysql_query("select * from attachments");

while($row = mysql_fetch_array($result))
{
echo '<a href="'.$row[2].'" target="_blank">Download</a>--'.$row[3].'<br>';
}

mysql_close($con);
?>

是我正在使用的代码。该文件夹的所有者是 www-data:/或网络服务器。所以应该没有访问问题。

最佳答案

使用

  • 一个symlink指向 /var/uploads(教程 here)

  • Apache Alias directive 别名/uploads/var/uploads(必须在 httpd.conf 中)

  • 或接受 GET 变量 filename=upload.jpg 并获取文件的代理 PHP 脚本,例如使用 fpassthru()

后者是最不可取的选择,因为它是资源密集型的,但有时它是唯一的选择。它还需要适当的保护,以防止攻击者通过代理获取您服务器上的其他文件。

关于php - 允许用户在 webroot 之外下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3884677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com