ThinkPHPComment masquer l'arrière-plan ? L'article suivant vous présentera comment ThinkPHP utilise intelligemment les règles de routage pour masquer l'arrière-plan, rendant ainsi votre site Web plus sécurisé !
Comme nous le savons tous, si le module backend du framework thinkphp s'appelle admin, vous pouvez directement utiliser http://nom de domaine/admin pour accéder au backend administrateur. Cette méthode d'accès est très pratique. , mais il y a aussi de gros problèmes Risques de sécurité, les pirates peuvent facilement deviner votre backend puis utiliser la force brute pour pirater le backend. Alors, existe-t-il un moyen de résoudre ce danger caché ? Voyons comment utiliser les règles de routage pour modifier le chemin du backend afin d'empêcher les pirates informatiques de connaître notre entrée backend. Il existe de nombreux tutoriels sur la façon de masquer l'administrateur en arrière-plan sur Internet, mais le plus utile est cette méthode de règle de routage.
1,
2 Enregistrez le code clé des paramètres, comme suit :
.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('后台地址不能与现有系统模块名同名'); } } }
Remarques :
- admin_module est la clé pour enregistrer le nom du module d'arrière-plan dans ma base de données
- APP_PATH est une constante de la version thinkphp5.0. S'il s'agit d'autres versions, veuillez la modifier vous-même.
1. La structure principale du tableau des données de configuration est la suivante :
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) méthode : obtenez-le en fonction du nom de la clé La valeur correspondante
<?php use think\Cache; use app\common\model\Config; /** * 获取或配置系统参数 * @param string $name 参数名称 * @return string */ function sysconfig($name) { $config = Cache::get('config'); if (empty($config)) { $config = Config::column('key,val'); Cache::set('config',$config,1800);//缓存30分钟 } return isset($config[$name]) ? $config[$name] : ''; }
Ajouté :
1 S'il s'agit simplement d'un système pour un usage personnel et que vous ne voulez pas être si gênant, vous pouvez également ajouter directement la configuration suivante. à config.php :
return [ // +---------------------------------------------------------------------- // | 应用设置 // +---------------------------------------------------------------------- // 后台模块名 'admin_module' => 'myadmin', ]2. Puis appelez-le directement dans le projet :
$admin_module = Config('admin_module');
<?php use think\route; $route_config = [ 'index'=>'index/index', ]; //1.获取后台模块 $admin_module = sysconfig('admin_module'); if ($admin_module == '') { $admin_module = 'admin'; } //2.设置后台路由 if ($admin_module != 'admin') { $admin_route_config = [ //路由禁止:原理是把它指到非登陆地址,在没有登陆情况下,跳转到404页面; 'admin/$' => 'admin/login/jump', 'admin/login$' => 'admin/login/jump', 'admin/login/index' => 'admin/login/jump', $admin_module . '/$' => 'admin/login/index', ]; $route_config = array_merge($route_config, $admin_route_config); } return $route_config;
1. Cette méthode jump() est en fait la méthode désignée pour interdire les routes dans notre troisième étape
public function jump() { if(!Session::has('uid')) { $request = Request::instance(); if(sysconfig('admin_module') == 'admin' || sysconfig('admin_module') == '') { $this->redirect('@admin/login/index'); } else { header("HTTP/1.1 404 Not Found"); return $this->fetch(APP_PATH.'/404.html'); } } else { $this->redirect('@admin/index/index'); } }
2. Le code dans jump() ci-dessus n'a qu'une seule fonction. , c'est-à-dire que l'accès à une route interdite sans vous connecter entraînera un saut vers la page 404, comme suit :
3 La page 404.html est placée dans le répertoire de l'application, et le code est le suivant :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>很抱歉,此页面暂时找不到!</title> <style type="text/css"> 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> </head> <body> <div id="page" style="border-style:dashed;border-color:#e4e4e4;line-height:30px;"> <h1>抱歉,找不到此页面~</h1> <h2>Sorry, the page you're trying to find has moved. </h2> <font color="#666666">你请求访问的页面,暂时找不到!</font><br /><br /> <div class="button"> <a href="javascript:;" onClick="javascript :history.back(-1);" title="返回上一页">返回上一页</a> </div> </div> </body> </html>.
4. Comment se déconnecter
public function logout() { if(Session::has('adminid')) { Session::delete('adminid'); } $this->redirect(url('@'.sysconfig('admin_module'))); }
Adresse originale : https://juejin.cn /post/6981428649765371940
Pour plus de connaissances sur la programmation, veuillez visiter : Introduction à la programmation ! !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!