【问题标题】:How to restrict/forbid access to specific file types such as .js .css inside a .htaccess file?如何限制/禁止访问 .htaccess 文件中的特定文件类型,例如 .js .css?
【发布时间】:2011-08-02 01:58:26
【问题描述】:

如果远程用户知道文件的确切位置,他仍然可以从浏览器访问该文件。有人如何知道私人文件的位置?好吧,这并不重要,但他可能会看到警告消息中显示的路径或文件,或者文件可能是可浏览的(目录索引中没有隐藏文件)。因此,如果有“特殊文件”在任何情况下都不想提供给远程用户,那么您将不得不拒绝对它们的访问。但问题是如何?

在我的 webroot 文件夹中的 .htaccess 文件中:

<FilesMatch "\.(js|css)$">
Order deny,allow
Allow from all
</FilesMatch>

但这似乎不起作用.. :-(
我正在使用 Apache 2.2

【问题讨论】:

    标签: apache .htaccess permissions


    【解决方案1】:

    您的代码看起来与找到的代码 here 完全不同。试试看呢:

    <Files ~ "(.js|.css)">
    Order allow,deny
    Deny from all
    </Files>
    

    如果您使用的是 Apache 2.4 或更高版本

    <Files ~ "(.js|.css)">
       Require all denied
    </Files>
    

    【讨论】:

    【解决方案2】:

    您尝试做的事情行不通

    需要允许不受限制地访问您的 .css 和 .js 文件。如果用户的浏览器无法请求样式表或使页面打勾的 javascript,那么该页面将无法为他们工作。 (它会加载;但它看起来很糟糕,因为对样式表的请求被拒绝了,任何依赖 JavaScript 的东西也无法工作。)

    【讨论】:

      【解决方案3】:

      更新 apache2.conf 中的 FilesMatch 将使其成为全局更改,而无需将其单独添加到所有站点/虚拟目录。

      作为旁注,我建议将任何可能包含配置设置(如 .xml .ini .conf 等)的文件添加到排除列表中...这不会阻止 www-data 用户,它只会保留对这些用户的外部请求文件被提供和显示。

      (Ubuntu 14.04 Apache2)

      原文:

          <FilesMatch "^\.ht">
                  Require all denied
          </FilesMatch>
      

      新:

          <FilesMatch "^\.ht|.js|.css">
                  Require all denied
          </FilesMatch>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-07
        • 2012-12-06
        • 2015-08-22
        相关资源
        最近更新 更多