拒绝使用 htaccess 直接访问文件

Posted

技术标签:

【中文标题】拒绝使用 htaccess 直接访问文件【英文标题】:Deny direct access to files using htaccess 【发布时间】:2014-05-11 20:19:02 【问题描述】:

我的网站中有以下目录结构,

/public_html
/public_html/admin/
/public_html/admin/js/
/public_html/admin/css/ ....

基本上我想禁止所有直接访问 /admin 子文件夹内的文件,比如不允许直接访问 /js/ 文件夹内的 js,但允许它从我的 php 页面访问

我在 /js/ 文件夹中添加了带有以下代码的 .htaccess 文件,

Order deny,allow
Deny from all

所以不让我直接通过浏览器访问就好了!

但是当我尝试访问 index.php 页面,其中 /js/ 文件夹的文件包含在标签中时,它没有加载。

那么谁能帮帮我!

提前致谢。

【问题讨论】:

【参考方案1】:

您不是“从您的 PHP 页面”访问它。 Web 服务器要么正在服务请求,要么不服务。当您在浏览器中加载“PHP 页面”时,浏览器会发出请求并从您的页面中请求链接到的所有 javascript、CSS 和图像资源。其中每一个都是对 Web 服务器的单独 HTTP 请求。 Web 服务器没有上下文表明此 HTTP 请求是因为资产是从“您的 PHP 页面”链接到的,这与它完全无关。您可以使用 HTTP 请求从服务器获取文件,也可以不获取。而通过设置Deny from all,你不能。

您必须通过一个 PHP 文件汇集所有请求,该文件会检查登录信息,并且仅在用户正确登录时才提供该文件。例如链接到scripts.php?file=js/myscript.js 并在scripts.php 中有身份验证检查代码。

【讨论】:

如果您有 cookie 令牌存在测试 + myscript.js 请求;您可以避免 php 处理并让 apache 路由请求 当然可以,但是因为我猜您想针对 PHP 会话进行验证,所以您需要调用 PHP。仅仅测试 some cookie 的存在而不验证它是一个有效的会话并不是真正的保护。【参考方案2】:

当您像这样限制文件夹时,您不能将其中的文件包含在 HTML 页面中。与人通过 URL 直接访问 JS 基本相同的请求。

【讨论】:

【参考方案3】:

通常是 cpanel 之类的工具

    盗链保护

    Hotlink protection prevents other websites from directly linking to files (as specified below) on your website. Other sites will still be able to link to any file type that you don't specify below (i.e., HTML files). An example of hotlinking would be using an <img> tag to display an image from your site somewhere else on the Web. The end result is that the other site is stealing your bandwidth.

    索引管理器

    The Index Manager allows you to customize the way a directory will be viewed on the web. You can select between a default style, no indexes, or two types of indexing. If you do not wish for people to be able to see the files in your directory, choose "No Indexing".

1&2 是来自通常托管 cpanel 的工具。可能它会覆盖 apache conf 文件(不确定是哪些)

但是,您还应该注意 HTTP 引荐来源网址。您可以据此决定何时不展示您的资源。

`HTTP referer is an HTTP header field that identifies the address of the webpage (i.e. the URI or IRI) that linked to the resource being requested`

【讨论】:

以上是关于拒绝使用 htaccess 直接访问文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 htaccess 拒绝对文件夹的直接访问

.htaccess 拒绝访问图像文件夹,但允许访问查看单个图像

.htaccess 拒绝目录访问

使用 .htaccess 拒绝访问目录中的所有 PHP 文件

拒绝访问 .htaccess 中的一个特定文件夹

拒绝访问 htaccess 中的多个文件