【问题标题】:How to block access to a folder except from internal pages如何阻止对除内部页面之外的文件夹的访问
【发布时间】:2014-10-09 16:27:04
【问题描述】:

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

Order deny,allow
Deny from all
Allow from localhost

以及其他几种变体,每次它都会破坏指向 pdf 的链接。我做错了什么?

【问题讨论】:

  • 您可能必须编写一个 php 脚本才能真正获取 pdf 并触发下载。回显链接是不够的,因为用户不是本地主机。

标签: php mysql apache .htaccess http


【解决方案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>';

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

【讨论】:

    【解决方案2】:

    如果你把localhost改成IP地址或者服务器IP,就可以了。

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

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

    【讨论】:

      猜你喜欢
      • 2014-01-16
      • 1970-01-01
      • 2014-01-08
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多