如何阻止访问除内部页面之外的文件夹

时间:2014-10-09 16:27:04

标签: php mysql apache .htaccess http

我有一个非常简单的页面,用户可以登录并下载pdf。 pdf的路径直接从数据库中提取并回显到链接中。关于我的脚本的一切都很有效,除了我需要阻止任何人访问pdfs的文件夹。我尝试使用以下内容将htaccess文件添加到pdf目录:

Order deny,allow
Deny from all
Allow from localhost

除了其他几个变体之外,每次只是打破了pdf的链接。我做错了什么?

2 个答案:

答案 0 :(得分:1)

回应链接直接获取PDF是不够的。 Allow from localhost表示服务器可以访问它,但不能访问用户。因此,您必须制作一种“代理”php脚本,以使服务器触发下载:

<?php
$pathToThePdf = $_GET['pdf_path'];

header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="mydownload.pdf"');

readfile($pathToThePdf);

然后在您最初的PHP脚本中,您回显指向该代理的链接:

echo '<a href="/path/to/proxy.php?pdf_path='.$thePdfPath.'">download</a>';

显然,您需要通过检查用户是否已登录来为此代理添加一些安全性。

答案 1 :(得分:0)

如果您将localhost更改为IP地址或服务器IP,它将起作用。

如果您专门前往http://localhost,则需要使用::1,否则请使用服务器的IP地址。

order deny,allow
deny from all
allow from ::1