【问题标题】:Using .htaccess to Deny All Except from a Specific Referring Page使用 .htaccess 拒绝除特定引用页面之外的所有内容
【发布时间】:2020-02-19 19:05:18
【问题描述】:

有没有办法限制对文件夹的访问(使用 .htaccess 或其他方法),以便阻止所有请求,但来自另一个域上特定路径的请求除外?

我已经尝试过类似的方法,但它不起作用。

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_REFERER} .
RewriteCond %{HTTP_REFERER} !hosting_domain\.net [NC]
RewriteCond %{HTTP_REFERER} !referring_domain\.com/path/to/referrer [NC]
RewriteRule .? - [F]

基本上,我想最终实现这样一种场景,即用户转到某个页面,然后只能从该页面访问受限文件。

更多细节...

  • .htaccess 文件比“受保护”文件所在的文件夹高一级。
  • 没有其他 .htaccess 文件。
  • 目前允许通过直接浏览文件进行直接访问。
  • 文件中唯一未注释掉的其他代码如下。

AddHandler application/x-httpd-php70 .php <IfModule mod_suphp.c> suPHP_ConfigPath /opt/php70/lib </IfModule>

【问题讨论】:

  • 这当然是可能的,但根本不可靠,因为显然任何对您的“受限文件”感兴趣的人都可以将引荐来源标题设置为任何看起来合适的内容。所以这更像是一种混淆形式,而不是保护系统。
  • 同意。我不是 100% 关心安全性,但我只是想添加一些比没有更重要的东西。关于如何实现这一点的任何想法?
  • 您的方法指向正确的方向。恐怕我们在这里帮不上什么忙,因为我们不知道您的实际请求情况。您的“但它不起作用”在这里没有帮助,到目前为止还很模糊。
  • 我建议您启用重写日志记录。检查您在此处使用的重写模块的文档以了解如何操作。该文档质量非常好,是开源软件的典型代表,并附带了很好的示例。重写日志允许详细了解重写引擎内部实际发生的情况。
  • @MrWhite:我只希望通过我指定的引用链接获得文件。没有浏览到他们,或获得某种其他链接到他们。我知道推荐人可以被欺骗,这是“默默无闻的安全”,但这是我目前正在寻找的。​​span>

标签: .htaccess


【解决方案1】:
RewriteCond %{HTTP_REFERER} .
RewriteCond %{HTTP_REFERER} !hosting_domain\.net [NC]
RewriteCond %{HTTP_REFERER} !referring_domain\.com/path/to/referrer [NC]
RewriteRule .? - [F]

我只想要通过我指定的引用链接获得的文件。 不浏览他们

如果您不想允许“直接访问”,那么您需要删除第一个检查Referer 是否为空的RewriteCond 指令。在直接请求中,Referer 为空。

如果您希望引用域访问资源,那么您也应该删除第二个条件。

您还可以更具体地指定引用域并包含完整的绝对 URL。换句话说:

RewriteCond %{HTTP_REFERER} !^https://referring_domain\.com/path/to/referrer$
RewriteRule .? - [F]

我还删除了 NC 标志 - Referer 应该是“确切” URL - 大小写正确。 (如果有设置的话。)

【讨论】:

  • 也许我做错了。我有... RewriteEngine On RewriteBase / RewriteCond %{HTTP_REFERER} !^example.com/subdomainfolder/folders/referring_page.php$ RewriteRule .? - [F] 我错过了什么?
  • 评论的格式弄乱了。它不允许换行。对不起。
  • 它应该与我的回答中所写的完全相同(加上RewriteEngine On 指令)。 RewriteBase 这里不需要。所以有什么问题?这些文件是否仍可直接访问?来自引用域的链接未被阻止?你的.htaccess 文件中有其他指令吗?你还有其他.htaccess 文件吗?正在处理.htaccess 文件吗?浏览器的 HTTP 请求标头中传递了什么 Referer
  • 我在 .htaccess 文件中的唯一内容是 RewriteEngine On RewriteCond %{HTTP_REFERER} !^example\.com/subdomainfolder/folders/referring_page.php$ RewriteRule .? - [F] 在通过 example\.com/subdomainfolder/folders/referring_page.php 页面“抓取”该文件时,我遇到了 403 禁止。
  • 仅供参考:Chrome 检查员在被禁止的文件上说“推荐人政策:no-referrer-when-downgrade”。我真的不太了解直接编辑 .htaccess 文件,所以也许我做错了什么。
猜你喜欢
  • 1970-01-01
  • 2014-01-08
  • 2015-09-13
  • 1970-01-01
  • 1970-01-01
  • 2017-06-21
  • 1970-01-01
  • 2015-05-30
  • 1970-01-01
相关资源
最近更新 更多