DENY使用php直接下载文件

时间:2012-12-24 19:04:53

标签: php .htaccess

我的服务器上的下载目录中有.doc.zip个文件。 无论是谁访问我的网站页面(download-file.php),只有那些用户应该能够下载这些文件而其他用户不应该。

我正努力实现上述但没有运气......

我仍然可以将直接文件地址(http://example.com/sample.doc)放入浏览器中,我可以下载我不想要的内容..即使有人在任何网站上提供上述文件的链接,然后也应该下载没有发生。

任何人都可以分享一些想法......我应该做到这一点。

提前谢谢。

4 个答案:

答案 0 :(得分:12)

在文档根目录中的htaccess文件中,您可以包含以下规则:

RewriteEngine On
# you can add whatever extensions you want routed to your php script
RewriteCond %{REQUEST_URI} \.(doc|zip|pdf)$ [NC]
RewriteRule ^(.*)$ /download-file.php?filename=$1 [L]

然后在您的download-file.php中,您可以显示您需要显示的内容和下载链接,您的php脚本可以使用php's readfile() (see link for examples)

立即为该文件提供服务

答案 1 :(得分:3)

您应该禁止访问您的文件目录,并且仅提供PHP驱动的下载(例如PDF格式):

data / .htaccess(googled):

deny from all

download.php:

/* User access check here, prior to the following code */

$name = 'MyPDF.pdf';
$filename = 'data/pdf_12345.pdf';
header('Content-Disposition: attachment; filename="'.$name.'"');
header("Content-Type: application/pdf");
header("Content-Length: " . filesize($file));
fpassthru($filename)

当然,您可以为每个用户和每个请求设置不同的文件名,例如download.php?file=MyPDF

答案 2 :(得分:0)

您应该能够使用类似于以下代码的方法限制人们直接访问您的内容:

RewriteCond%{HTTP_REFERER}!^ http://your_domain.com/.*$ [NC]

RewriteCond%{HTTP_REFERER}!^ http://your_domain.com $ [NC]

RewriteCond%{HTTP_REFERER}!^ http://www.your_domain.com/.*$ [NC]

RewriteCond%{HTTP_REFERER}!^ http://www.your_domain.com$ [NC]

RewriteRule。*。(jpg | jpeg | gif | png | bmp | pdf | doc)$ http://your_domain.com/no_access.php [R,NC]

这会阻止人们直接链接您网站上的图片,pdf或文档。然后,只能从您的网站访问具有这些扩展名的文件。如果有人试图直接链接或访问您的文件,他们将体验您选择的任何内容(您将其置于no_access.php中)。

答案 3 :(得分:0)

如果您有专用服务器,最简单的,我认为最安全的方法是将文件存储在 / var / www /

之外

您可以创建一个文件夹 / var / webdocs / 并将其存储在那里。