yzmcms如何修改网站管理后台的地址,不将admin路径暴露出来
很多同学出于安全考虑,防止别人看到自己的网站后台,以及防止在登陆后台尝试登陆账号,暴力破解后台密码。所以想会后台路径换一下。 不过,官方说,不需要换,无需担心安全问题,系统很安全。 这就好比广场上配置有凉衣架,社区管理员让你把你的82年的裤衩,拿到广场上凉,你说我想凉自己阳台就好了。管理员说没关系,广场很安全不会丢的。 二人说的都没毛病,但是又总觉得哪儿不对。 那么,yzmcms的管理后台路径能改吗? 答案:不能 好了,这篇文章结束了吗。 然而并不是,老夫这有一计,可以解决admin暴露的问题。 其实,不是不能改后台路径,而是太麻烦了,模板中的后台链接全部用的admin,如果改模板名,那么模板这么多文件,你要一个个改个遍,如果程序升级,怎么办?再来一遍吗!太费事了 虽然不能改后台路径,但是,我们可以通过程序限制/admin/的访问权限。当游客访问admin模块时,自动提示模块不存在。100%防真模拟官方的提示效果。即:module does not exist : admin 对游客隐藏admin模块的原理: 当游客访问后台时,如果不带上key访问,那么就会提示模块不存在,如果管理员访问后台时,带上正确的key访问,则即可正常显示模块。 操作方法: 1、打开文件 \application\admin\controller\common.class.php 2、找到大概第20行的判断用户是否已经登录部分,将 final private function check_admin()函数加3行 添加后的完整的函数代码如下:
final private function check_admin() { $key=empty($_GET['key'])?'':$_GET['key']; if(ROUTE_M =='admin' && ROUTE_C =='index' && ROUTE_A =='login') { if($key<>'skyer') application::halt("module does not exist : admin", 404); return true; } else { $adminid = intval(get_cookie('adminid')); if(!isset($_SESSION['adminid']) || !isset($_SESSION['roleid']) || !$_SESSION['adminid'] || !$_SESSION['roleid'] || $adminid != $_SESSION['adminid']) { if($key<>'kkno') application::halt("module does not exist : admin", 404); echo '<----script type="text/javascript"> var url="'.U('admin/index/login')----.'"; if(top.location !== self.location){ top.location=url; }else{ window.location.href=url; }'; exit(); } self::check_referer(); } }
以后,你访问后台,即可通过 /admin/index/login.html?key=skyer 来登陆,即可,正常的路径后台加上?key=skyer。 你也可以在函数中,将skyer改成自己能记住的字符。 再也不用担心管理后台能让任意人可以访问了!