php - 如何防止使用 php 公开下载文件?

标签 php authentication authorization download

我有一个脚本,只允许授权用户将文件上传到某个文件夹。

但是我不知道如何防止人们在没有登录的情况下随意下载。

我需要 php 中的解决方案。

我用谷歌搜索了一下,但还没有直接的结果。

目前在我的文档根目录中有一个名为 admin 的文件夹和一个名为 uploads 的子文件夹。所以只有管理员角色可以上传。编辑和管理员都可以下载。这种情况怎么办?

请指教。

最佳答案

将文件放在公共(public) webroot 目录之外的某个地方,或者将您的服务器配置为不提供这些文件。只要您的服务器乐于使用有效的 URL 为所有内容提供服务,您就无法使用 PHP 来阻止这种情况。


如果您的文件在 /public_html/ 文件夹中,请将它们从该文件夹中取出并放置在例如/secret_files/,因此您的目录结构如下所示:

public_html/
    index.html
    admin/
        admin_index.php
secret_files/
    my_secret_file.txt

Web 服务器仅配置为提供 /public_html/ 目录中的文件,因此没有人可以访问目录之外(技术术语 above) 它。

要仍然允许某些人下载这些文件,请按照 cletus 的建议进行操作并使用 readfile通过 PHP 脚本“手动提供”文件。 PHP 仍然可以访问文件系统的这些其他部分,因此您可以将其用作看门人。

关于php - 如何防止使用 php 公开下载文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2339649/

相关文章:

post - Swift 2 如何向 POST 请求添加授权 header

authentication - .Net Core 身份验证和用户 session

php - 在 PHP 中实现一个简单的准备好的查询

javascript - 如何在<pre>标签的每一行末尾添加<br/>?

java - OpenId 连接 Google 和 linkedIn

authentication - 验证 Mercurial Changesets 来自他们所说的来自谁

javascript - 在 JavaScript 中将字符串附加到 JSON 请求的末尾

php - 如何处理电子邮件错误的重复输入?

java - 用户 facebook "access token"是永久且唯一的吗?

authorization - 无法获得服务帐户授权以使用 Python 客户端库 API 处理 GCS 脚本