【问题标题】:How can I deny access to all files in directory but allow access from specific php file in other directory?如何拒绝访问目录中的所有文件,但允许从其他目录中的特定 php 文件访问?
【发布时间】:2016-08-24 20:14:42
【问题描述】:

我有一个网络应用程序,用于管理文件 /upload 中的 jpg 图像。我想拒绝从 url:domain.com/upload/image.jpg 访问 /upload 中的所有图像,但授予对 /page.php 的访问权限。我试过 /upload/.htaccess 但它也拒绝访问我的 /page.php 文件。

有什么建议吗?

【问题讨论】:

  • page.php 如何“加载”图片?通过读取图像(使用fopen() 或其他东西)并返回图像数据或简单地链接到/upload/image.jpg
  • 在创建子文件夹 images 后尝试重定向匹配并将所有图像放入其中。将 page.php 放在upload/page.php 中。重定向匹配 ^/upload/images/$ example.com

标签: php .htaccess directory


【解决方案1】:

图片是通过链接/upload/image.jpg来加载的

如果您从page.php 生成的内容链接它们,那么使用 htaccess 阻止它的唯一方法是检查“Referer”(原文如此)标头。此标头由浏览器发送,以让服务器知道哪个 URL 告诉它加载该资源。如果有人直接访问图片,则引用者可能是空白的(例如,如果他们在 URL 地址栏中键入)或者如果它是从 page.php 链接的,那么引用者会说 /page.php。然而,引用者很容易被伪造,所以这不是阻止访问的可靠方法。

/upload/ 文件夹中的 htaccess 文件中尝试添加:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !/page\.php$
RewriteCond %{REQUEST_URI} !\.php$
RewriteRule ^ - [L,F]

【讨论】:

  • 我将此添加到我的 .htaccess 文件中:RewriteEngine On RewriteCond %{HTTP_REFERER} !/page\.php$ RewriteCond %{REQUEST_URI} !\.php$RewriteRule ^ - [L,F]` **显然添加了我的页面名称 **清除了我的缓存 PHP 页面就像一个魅力,但是我仍然可以在地址栏中输入 URL 并获取图像。
  • @BryanJ 如果您已经加载了图像,它会被缓存。您是否尝试过清除缓存然后尝试直接转到图像?
猜你喜欢
  • 1970-01-01
  • 2012-09-02
  • 1970-01-01
  • 2011-12-12
  • 2020-04-15
  • 2011-04-25
  • 2017-10-22
  • 2017-03-26
  • 2016-03-23
相关资源
最近更新 更多