Maison > cadre php > PensezPHP > Comment configurer le routage dans ThinkPHP pour masquer l'arrière-plan !

Comment configurer le routage dans ThinkPHP pour masquer l'arrière-plan !

青灯夜游
Libérer: 2021-09-08 20:04:20
avant
3635 Les gens l'ont consulté

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é !

Comment configurer le routage dans ThinkPHP pour masquer l'arrière-plan !

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.

Comment configurer le routage dans ThinkPHP pour masquer larrière-plan !

La première étape consiste à ajouter des paramètres de réglage en arrière-plan qui peuvent modifier le nom du module d'arrière-plan

1,

Comment configurer le routage dans ThinkPHP pour masquer larrière-plan !

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('后台地址不能与现有系统模块名同名');
		}
	}
}
Copier après la connexion

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.

La deuxième étape consiste à lire les informations de configuration du site Web dans application/common.php

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;
Copier après la connexion

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(&#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;;
}
Copier après la connexion

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 [
    // +----------------------------------------------------------------------
    // | 应用设置
    // +----------------------------------------------------------------------
	// 后台模块名
    &#39;admin_module&#39;           => &#39;myadmin&#39;,
]
Copier après la connexion

2. Puis appelez-le directement dans le projet :

$admin_module = Config(&#39;admin_module&#39;);
Copier après la connexion

La troisième étape, la configuration de la route application/route.php

<?php
use think\route;

$route_config = [
	&#39;index&#39;=>&#39;index/index&#39;,
];
//1.获取后台模块
$admin_module = sysconfig(&#39;admin_module&#39;);
if ($admin_module == &#39;&#39;) {
    $admin_module = &#39;admin&#39;;
}
//2.设置后台路由
if ($admin_module != &#39;admin&#39;) {
    $admin_route_config = [
		//路由禁止:原理是把它指到非登陆地址,在没有登陆情况下,跳转到404页面;
		&#39;admin/$&#39; => &#39;admin/login/jump&#39;,
		&#39;admin/login$&#39; => &#39;admin/login/jump&#39;,
		&#39;admin/login/index&#39; => &#39;admin/login/jump&#39;,
		$admin_module . &#39;/$&#39; => &#39;admin/login/index&#39;,	
    ];
    $route_config = array_merge($route_config, $admin_route_config);
}
return $route_config;
Copier après la connexion

La quatrième étape, ajoutez le jump() méthode de vérification des sauts dans le contrôleur de connexion Login.php

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(&#39;uid&#39;)) {
		$request = Request::instance();
		if(sysconfig(&#39;admin_module&#39;) == &#39;admin&#39; || sysconfig(&#39;admin_module&#39;) == &#39;&#39;) {
			$this->redirect(&#39;@admin/login/index&#39;);
		} else {
			header("HTTP/1.1 404 Not Found");
			return $this->fetch(APP_PATH.&#39;/404.html&#39;);
		}
	} else {
		$this->redirect(&#39;@admin/index/index&#39;);
	}
}
Copier après la connexion

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 :

Comment configurer le routage dans ThinkPHP pour masquer larrière-plan !

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&#39;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>
Copier après la connexion
.

4. Comment se déconnecter

public function logout() {
	if(Session::has(&#39;adminid&#39;)) {
		Session::delete(&#39;adminid&#39;);
	}
	$this->redirect(url(&#39;@&#39;.sysconfig(&#39;admin_module&#39;)));
}
Copier après la connexion

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!

Étiquettes associées:
source:juejin.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal