在服务器上隐藏文件的最佳方法是什么?

时间:2009-09-23 16:09:53

标签: php .htaccess

我打算用PHP制作一个图像托管系统。 我想知道如何隐藏用户的图像,以便只能通过特殊网址访问它们。

我需要讨论包含htaccess的所有技术。

6 个答案:

答案 0 :(得分:8)

将文件放在相对根目录之外,并使用showimage.php之类的脚本从webroot外部获取文件并将其流式传输给用户。代码看起来像:

$len = filesize($filename);
header("Content-type: image/jpeg");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=\"$new_filename\"");
readfile($filename);

此外,由于您正在运行脚本,因此您可以在脚本中执行身份验证/授权。这允许您设置modRewrite规则,例如:

RewriteRule ^images/(.*)$   /showimage.php?file=$1

这样你的图像文件就可以像以下一样重复:

www.domain.com/images/somefile.jpg

而不是:

www.domain.come/showimage.php?file=somefile.jpg

答案 1 :(得分:3)

你写了一个小的php脚本,它读取图像文件并将内容发送到客户端。 PHP脚本可以检查其参数和cookie,并将图像保存在文档根目录之外的某个位置。

答案 2 :(得分:3)

只是不要将图像存储在Web根目录中。使用php文件来管理访问。如果要显示文件,请执行以下操作:

<?php
header('Content-type: image/jpeg');
$f = file_get_contents('path/to/image.jpg');
print $f;
?>

答案 3 :(得分:1)

我希望不是让PHP进程在发送内容时长时间发送文件和hog服务器资源..创建一个脚本,将文件复制到具有随机名称的目录,然后只发送该文件给用户并让另一个脚本在设置间隔后清除该目录..如果创建时间超过30分钟..删除..这样你最小化你只需要一个apache进程发送回文件而不是apache + php进程。

答案 4 :(得分:0)

将它们放在文档根目录中的一个目录中。然后,使用.htaccess文件来抓取它们:

RewriteBase /
RewriteRule ^(.+?)\.jpg$ ../imgs/$1.jpg

答案 5 :(得分:-1)

我认为最好的方法是加密它。