【问题标题】:zip file protection on server服务器上的 zip 文件保护
【发布时间】:2013-09-02 16:28:37
【问题描述】:

我的网站中有 zip 文件,并且我创建了一个登录系统,因此只有具有有效密码的用户才能下载 zip 文件ONCE

但总有可能他们可以通过在浏览器地址栏中输入文件路径直接下载 zip 文件。

您可以通过查看源代码获取该zip文件的链接。

如何通过简单地在浏览器地址栏中发布文件链接来拒绝人们下载 zip 文件?有可能吗?

【问题讨论】:

  • 不要将其存储在可访问的位置,而是通过 PHP 提供。
  • 感谢您的评论。我将存储它们的任何地方都将显示在源代码中
  • 我认为您并没有完全理解我的意思,我会写得更完整,并稍后将其作为答案发布。

标签: php zip hosting


【解决方案1】:

不要将文件放在可通过网络访问的文件夹中(例如/var/www/),而是将其放在其上方,以便用户无法浏览到它(例如/var/files)。然后将其提供给您的用户,在他们输入密码后,使用 php 脚本,让脚本像文件一样设置标题,并使用readfile 将文件的内容输出给用户。

【讨论】:

    【解决方案2】:

    首先,在您的根目录 (~/) 中创建一个名为 secure_zip 或其他名称的文件夹。这应该位于您的 public_html 文件夹旁边(这意味着无法通过输入 URL 来访问它们)。

    接下来,创建一个新的 php 脚本,叫做 file.php 什么的:-

    <?php
    public function sendFile() {
        $filename            = "sample.zip";
        $attachment_location = $_SERVER["DOCUMENT_ROOT"]
            . "../secure_zip/" . $filename;
    
        if (file_exists($attachment_location)) {
            header('Cache-Control: public'); // needed for i.e.
            header('Content-Type: application/pdf');
            header('Content-Disposition: attachment; filename="' . $filename . '"');
            readfile($attachment_location);
            die();
        } else {
            die('Error: File not found.');
        }
    }
    

    如果您使用任何您喜欢的逻辑对用户进行身份验证,则调用 sendFile(),例如:

    if (true) { sendFile(); }
    

    【讨论】:

    • 为什么是“应用程序/pdf”?是不是打错字了?
    • 感谢您的回复,我会试试看:D
    猜你喜欢
    • 2012-03-23
    • 2020-08-16
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多