可以使用.htaccess过滤白名单吗?

时间:2015-12-08 07:37:07

标签: apache .htaccess whitelist

有没有办法生成可接受文件或类型的白名单?我已经看到了拒绝文件请求的方法 - 是否可以拒绝列表中的所有内容?

我想到的那种白名单会是这样的:

*.html;*.jpg;*.css;*.php

...等

我认为其他文件请求可能导致找不到404文件

由于

1 个答案:

答案 0 :(得分:1)

您可以在根目录中创建这样的白名单.htaccess:

# deny everything first
Order Deny,Allow
Deny from  all

# then allow selected whitelisted extensions
<FilesMatch '\.(php|html|jpe?g|css|js)$'>
  Allow from all
</FilesMatch>

编辑:要为非白名单文件返回404,请使用以下规则:

RewriteEngine On

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule !\.(php|html|jpe?g|css|js)$ - [L,NC,R=404]

RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+)$ /index.php?page=$1 [QSA,L]