【问题标题】:Dissallow php execution for CSS folder with htaccess from parentfolder禁止使用父文件夹中的 htaccess 对 CSS 文件夹执行 php
【发布时间】:2015-06-18 00:01:01
【问题描述】:

我有一个问题。我想让一位客户通过 FTP 访问我的网店的 CSS 文件夹。我试图阻止在此文件夹中运行 PHP,但它不起作用。我认为我的问题是,我不想在 css 文件夹中添加另一个 .htaccess 。我必须使用主目录中的 .htaccess 文件来处理这个问题。

我试过了

RewriteRule ^css/*\.php$ /404.php [NC,L]

...但它不起作用。我的服务器正在执行 css 文件夹中的 php 文件。 有人知道我如何防止执行位于子文件夹中的 php 文件吗?更好的解决方案是,只允许特定文件夹中的 text/css。

信息:我正在使用 Plesk。

【问题讨论】:

  • /* 表示“0 个或多个斜线字符”。重写使用正则表达式,而不是普通的通配符。

标签: php apache .htaccess


【解决方案1】:

如果你不想让它运行,一个更好的方法是在那个目录中关闭 PHP……虽然这意味着额外的 .htaccess 文件。然而,它也会阻止 PHP 在任何类似 .phtml 文件中运行 - 我会说它比 404-ing anything.php 更安全。

您可以在 .htaccess 中使用 php_flag 设置 PHP 布尔类型设置

在这种情况下,在相关的 .htaccess 文件中:

php_flag engine off

正如 Mike Rockett 指出的那样 - 由于用户可以通过 FTP 访问该文件夹,因此您需要更改 .htaccess 文件 (CHOWN) 的所有权,以防止用户篡改或删除它。

【讨论】:

  • 好主意,但用户可以轻松删除.htaccess 文件,因为他可以通过 FTP 访问该目录。
  • @MikeRockett 公平点 - 除非您 chown 文件并拒绝他们访问它
  • 确实也是如此。
【解决方案2】:

您需要使用正则表达式,而不是通配符。将* 替换为(.*)

RewriteEngine on
RewriteRule ^css/(.*).php$ /404.php [NC,L]   

您可以使用以下选项:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_URI} ^/css/
RewriteRule (.*).php /404.php [L]

不过,我建议您明确表示拒绝访问该文件:

RewriteRule (.*).php - [F,L]

【讨论】:

  • 谢谢。 “RewriteRule (.*).php - [F,L]”是一个好方法。是否可以将过滤器恢复为“!css”而不是搜索 php 文件。
猜你喜欢
  • 1970-01-01
  • 2012-08-10
  • 1970-01-01
  • 1970-01-01
  • 2015-09-18
  • 2014-01-13
  • 2014-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多