摘要
这篇文章是后来才补上的,主要是我担心以后会忘记如何处理。
正文
前段时间,也就是我刚到武汉的第二个星期吧。
站点被人攻击了。
原理很简单:我有一个上传的功能。这个上传功能限制了不能上传html、php等扩展文件内容。这哥们利用apache的规则,给我上传了一个.htaccess与a文件。.htaccess对于apache来说,是管理当前目录下规则的。他给我上传的.htaccess里面拦截请求,然后额外添加了一套逻辑,将a改为a.php,然后调用a.php,妙就妙在这个a.php,是将我当前目录下所有内容发到他的服务器!
后来仔细研究了下,之所以.htaccess放在路径下面,是因为有的虚拟主机,仅仅是一个提供站点功能的主机,你并没有权限进行web服务器的修改。
但是,我就不一样了,我的服务器上的各种配置都是我配的,服务器都是我自己的。所以,我完全可以将.htaccess配置放到web服务器的配置中,由此,问题解决!
在配置文件中,将.htaccess添加到服务器配置里,这个是美化下载用的,也是我之前为啥在文件夹目录下用.htaccess,并不是解决办法。
conf
<Directory "D:/Develop/youarebitch/cloud">
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI}::$1 ^(.*?/)(.*)::\2$
RewriteRule ^(.*)$ - [E=BASE:%1]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule download/(.*)/sh/(.*) %{ENV:BASE}/vfm-admin/vfm-downloader.php?q=$1&sh=$2 [L]
RewriteRule download/(.*)/h/(.*) %{ENV:BASE}/vfm-admin/vfm-downloader.php?q=$1&h=$2 [L]
RewriteRule download/zip/(.*)/n/(.*) %{ENV:BASE}/vfm-admin/vfm-downloader.php?zip=$1&n=$2 [L]
</IfModule>
</Directory>
<Directory "D:/Develop/youarebitch/cloud/cloud">
<Files "*.php">
SetHandler none
SetHandler default-handler
Options -ExecCGI
RemoveHandler .php
</Files>
<IfModule mod_php5.c>
php_flag engine off
</IfModule>
Order Deny,Allow
Deny from all
</Directory>解决办法也很简单,根目录下,将配置修改为如下。禁用.htaccess中所有可用的命令!
conf
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride None