利用伪静态设置禁止扫描网站文件屏蔽含非法字符的url
每天查看日志文件都发现好多扫描我网站压缩文件的记录,刚开始我只是屏蔽掉IP,可是每天都换不同的IP来扫,虽然我网站里没有这些文件,但是却出现了大量的404记录,我担心会影响网站的权重,万一不小心备份网站的时候打包了没有及时删除,数据被下载了,密码,后台什么的都泄漏了。网站会被入侵。于是禁止这些类型文件的扫描是非常有必要的。
Apache的伪静态里加上下面的代码:
<FilesMatch (.*)\.(exe|bat|bak|com|sql|zip|rar|7z|cab|jar|tar|gz|iso|bz2|z)$> Order allow,deny deny from all </FilesMatch>
注意不要写在<IfModule></IfModule>里面。
Nginx的代码(网上找的,没有亲测过):
location ~/.*.(zip|rar|asp|jsp|aspx|ly|gz)$ { return 403; }
上面列出的格式,可以根据自己需要修改,这样设置好后,扫描带以上后缀的文件,都将返回403错误。
如果已经存在伪静态规则,使用下面这个。
if ($request_uri ~* "zip|rar|asp|jsp|aspx|ly|gz|ga|csv|fdc") { return 403; }
注:以上设置了后,自己登陆后台的链接含有这些禁止的字符也一样打不开了。需要跳过后台目录生效,nginx伪静态排除指定目录伪静态规则设置。改进如下:
location ~* /admin/|/include/{ break; #跳过后台等目录 } location ~* {#zblog自带规则 if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } if ($request_uri ~* "zip|rar|asp|jsp|aspx|ly|gz|ga|csv|apk|txt|doc|bak") { return 403; #url关键字符过滤 } }