ThinkPHP怎么配置路由,讓后臺隱藏起來!

thinkphp如何隱藏后臺?下面本篇文章就來給大家介紹一下thinkphp巧用路由規則隱藏后臺的方法,讓您的網站更安全!

ThinkPHP怎么配置路由,讓后臺隱藏起來!

眾所周知,如果thinkphp框架的后臺模塊名為admin的話,可以直接使用thinkphp的方式訪問管理員后臺,這個訪問方式很方便,但也存在很大的安全隱患,黑客很容易就猜到了你的后臺,然后進行暴力破解后臺。那有什么方法可以解決這個隱患呢?下面我們一起來探討如何利用路由規則來修改后臺路徑,防止黑客知道我們的后臺入口。網上有很多隱藏后臺admin的教程,但真正好用的,還是這個路由規則法。

ThinkPHP怎么配置路由,讓后臺隱藏起來!

第一步、后臺添加可以修改后臺模塊名的設置參數

1、

立即學習PHP免費學習筆記(深入)”;

ThinkPHP怎么配置路由,讓后臺隱藏起來!

2、保存設置的關鍵代碼,如下:

if(request()->isPost())?{ 	$data=input('post.'); 	//獲取系統全部模塊名 	$system_module?=?[]; 	foreach?(scandir(APP_PATH)?as?$dir)?{ 		if($dir?==?'.'?||?$dir?==?'..')?{ 			continue; 		} 		if(is_dir(APP_PATH.$dir))?{ 			array_push($system_module,?$dir); 		} 	} 	foreach?($data?as?$key?=>?$vo)?{ 		if($key?==?'admin_module'?&&?$vo?!=?'admin'?&&?in_array($vo,?$system_module))?{ 			$this->error('后臺地址不能與現有系統模塊名同名'); 		} 	} }

注意事項:admin_module 是我數據庫里保存后臺模塊名的鍵APP_PATH 是thinkphp5.0版本的常量,如果是其他版本,請自行修改。

第二步、在application/common.php里讀取網站的配置信息

1、config數據表主要結構如下:

DROP?TABLE?IF?EXISTS?`config`; CREATE?TABLE?`config`?( ??`id`?int(11)?NOT?NULL?AUTO_INCREMENT, ??`key`?varchar(255)?DEFAULT?NULL, ??`val`?text, ??PRIMARY?KEY?(`id`) )?ENGINE=InnoDB?AUTO_INCREMENT=1?DEFAULT?CHARSET=utf8;

?2、sysconfig($name)方法:根據鍵名獲取對應的值

<?php use thinkCache; use appcommonmodelConfig;  /**  * 獲取或配置系統參數  * @param string $name  參數名稱  * @return string  */ function sysconfig($name) { 	$config = Cache::get(&#39;config&#39;);     if (empty($config)) {         $config = Config::column(&#39;key,val&#39;); 		Cache::set(&#39;config&#39;,$config,1800);//緩存30分鐘      }     return isset($config[$name]) ? $config[$name] : &#39;&#39;; }

補充:

1、如果只是個人使用的系統,不想那么麻煩的話,也可以直接在config.php里直接添加如下配置:

return?[ ????//?+---------------------------------------------------------------------- ????//?|?應用設置 ????//?+---------------------------------------------------------------------- 	//?后臺模塊名 ????'admin_module'???????????=&gt;?'myadmin', ]

2、然后在項目里直接調用:

$admin_module?=?Config('admin_module');

?

第三步、路由設置 application/route.php

<?php use thinkroute;  $route_config = [ 	&#39;index&#39;=>'index/index', ]; //1.獲取后臺模塊 $admin_module?=?sysconfig('admin_module'); if?($admin_module?==?'')?{ ????$admin_module?=?'admin'; } //2.設置后臺路由 if?($admin_module?!=?'admin')?{ ????$admin_route_config?=?[ 		//路由禁止:原理是把它指到非登陸地址,在沒有登陸情況下,跳轉到404頁面; 		'admin/$'?=&gt;?'admin/login/jump', 		'admin/login$'?=&gt;?'admin/login/jump', 		'admin/login/index'?=&gt;?'admin/login/jump', 		$admin_module?.?'/$'?=&gt;?'admin/login/index',	 ????]; ????$route_config?=?array_merge($route_config,?$admin_route_config); } return?$route_config;

第四步、在登錄控制器Login.php里添加跳轉驗證的jump()方法

1、這個jump()方法實際上就是我們第三步禁止路由的指定方法

public?function?jump()?{ 	if(!Session::has('uid'))?{ 		$request?=?Request::instance(); 		if(sysconfig('admin_module')?==?'admin'?||?sysconfig('admin_module')?==?'')?{ 			$this-&gt;redirect('@admin/login/index'); 		}?else?{ 			header("http/1.1?404?Not?Found"); 			return?$this-&gt;fetch(APP_PATH.'/404.html'); 		} 	}?else?{ 		$this-&gt;redirect('@admin/index/index'); 	} }

2、上面jump()里的代碼,實現功能只有一個,那就是在未登錄的情況下,訪問被禁止的路由,會跳轉到404頁面,如下:

ThinkPHP怎么配置路由,讓后臺隱藏起來!

3、404.html頁面放到application目錄,代碼如下:

nbsp;html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;   <meta><title>很抱歉,此頁面暫時找不到!</title><style> body {margin: 0px; padding:0px; font-family:"微軟雅黑", Arial, "Trebuchet MS", Verdana, Georgia,Baskerville,Palatino,Times; font-size:16px;} div{margin-left:auto; margin-right:auto;} a {text-decoration: none; color: #1064A0;} a:hover {color: #0078D2;} img { border:none; } h1,h2,h3,h4 { /*	display:block;*/ 	margin:0; 	font-weight:normal;  	font-family: "微軟雅黑", Arial, "Trebuchet MS", Helvetica, Verdana ;  } h1{font-size:44px; color:#0188DE; padding:20px 0px 10px 0px;} h2{color:#0188DE; font-size:16px; padding:10px 0px 40px 0px;}  #page{width:910px; padding:20px 20px 40px 20px; margin-top:80px;} .button{width:180px; height:28px; margin-left:0px; margin-top:10px; background:#009CFF; border-bottom:4px solid #0188DE; text-align:center;} .button a{width:180px; height:28px; display:block; font-size:14px; color:#fff; } .button a:hover{ background:#5BBFFF;} </style><div> 	<h1>抱歉,找不到此頁面~</h1> 	<h2>Sorry,?the?page?you're?trying?to?find?has?moved.?</h2> 	<font>你請求訪問的頁面,暫時找不到!</font><br><br><div> 		<a>返回上一頁</a> 	</div> </div>   

4、退出登錄的方法

public?function?logout()?{ 	if(Session::has('adminid'))?{ 		Session::delete('adminid'); 	} 	$this-&gt;redirect(url('@'.sysconfig('admin_module'))); }

原文地址:https://juejin.cn/post/6981428649765371940

更多編程相關知識,請訪問:thinkphp!!

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享