很久之前写过一篇文章《织梦系统(DedeCMS)程序文件结构详解》,里面写到有个目录data
后台静态数据(如:自动更新、文档作者、来源、菜单等)
特别是data里面的admin目录:
记录了很多信息,网站系统的版本(ver.txt),网站内容的作者(writer.txt)等等,熟悉dedecms系统的人可以根据上述文件的内容,迅速判断出网站是由dedecms搭建的,因此,如果让用户访问不到这些文件,也就间接的保护了网站特征。通过在nginx上配置相关代码即可:
方法一:
location ^~/data/admin { return 404; } ## 注意admin后面没有"/",表示禁止整个目录及目录下面的所有文件; ## 如果有"/",则表示只是禁止此目录。
方法二:(推荐使用)
location ~ /data/admin/ { location ~ .*\.txt$ { return 404; } } ## 首先是匹配到admin目录 ## 然后是匹配admin目录下的任意以.txt结尾的文件 ## "~" 表示区分大小写的匹配, ## "." 表示任意一个字符, ## ".*"表示任意字符的多次重复, ## "\." 表示转义"."本身, ## "$"是表示以前面的字符结尾,txt$以txt结尾。 ## 以及data目录和admin目录整个目录的读取 location ~ /data/ { return 404; } location ~ /data/admin/ { return 404; }
以上方法都可以隐藏相应目录内的文件,但是唯一的区别就是,第一种方法还可以隐藏相应的目录。除了/data/admin/目录,其他的目录及文件隐藏都可以依此方法来执行。
############################### 2016.10.26 新增 ################################
使用谷歌搜索
inurl:login.php?dospost=showad
你会发现很多有趣的东西,点击这些搜索结果链接, 你会惊讶于这个不就是暴露了dedecms网站的后台路径了么?所以还得给这个路径加上锁来保密:(推荐使用)
##1.首先去robots.txt 添加一条下面的规则,禁止搜索引擎抓取页面的带有参数的动态链接 User-agent: * Disallow: /*?* ##本身建站就是希望全静态,因此屏蔽动态链接没什么关系 ##2.然后就是在nginx配置下面这段代码 if ( $request_uri = "/后台目录/login.php?dopost=showad" ) { return 404; } ##这样当访问这个页面将返回的是404,而非感人的“广告联系”
############################### 2016.10.27 新增 ##################################
修改plus目录,plus目录是dedecms默认的一个动态目录,里面的文件会暴露一定的安全隐患,所以将这个目录改名会是一个保护系统的好方法:(推荐使用)
修改plus目录名称为其他名称,比如
dynamic
进入
include
目录找到common.inc.php文件,然后编辑此文件将
$cfg_plus_dir = $cfg_cmspath.'/plus'; <!-- 改成 --> $cfg_plus_dir = $cfg_cmspath.'/dynamic';
完成以上两步骤,就将默认的plus目录改名了,且不影响正常的使用,若希望更加安全,可以删除不需要的文件
比如,ad_js.php,car.php等。
############################### 2017.06.21 新增 ##################################
通过dedecms的模板路径可以得知,很多人的模板放在了默认路径,还有一些则通过使用模板里面的资源文件(css,js,图片等)暴露了模板的路径,可以通过给读取包含templets目录的htm文件设置一个返回为404的页面,起到迷惑保护的的作用:(推荐使用)
location ~ /(templets)/.*\.(htm)?$ { #读取路径包含templets,并且只读取.htm文件,则返回404 return 404; }
如果使用的是默认的模板路径则建议将templets和默认的模板路径也封闭:
location ~ /templets/ { return 404; } location ~ /templets/default/ { return 404; }
####################2017.10.10 整合
将以上的内容整合起来:(有部分新增)
# .htm 或者 .html后缀的模板文件 location ~ /(templets)/.*\.(htm|html)?$ { return 404; } # /data/admin/目录下的一些txt文件 location ~ /data/admin/ { location ~ .*\.txt$ { return 404; } } ## 首先是匹配到admin目录 ## 然后是匹配admin目录下的任意以.txt结尾的文件 ## "~" 表示区分大小写的匹配, ## "." 表示任意一个字符, ## ".*"表示任意字符的多次重复, ## "\." 表示转义"."本身, ## "$"是表示以前面的字符结尾,txt$以txt结尾。 ## 以及data目录和admin目录整个目录的读取 location ~ /data/ { return 404; } location ~ /data/admin/ { return 404; } location ~ /plus/search.php { return 404; } location ~ /include/dialog/select_soft.php { return 404; } location ~ /include/dialog/config.php { return 404; }
以上内容可以写到一个配置文件中,比如guard_dedecms.conf
,然后主机配置文件加载此文件。