Heim  >  Artikel  >  PHP-Framework  >  So konfigurieren Sie das Routing in ThinkPHP, um den Hintergrund auszublenden!

So konfigurieren Sie das Routing in ThinkPHP, um den Hintergrund auszublenden!

青灯夜游
青灯夜游nach vorne
2021-09-08 20:04:203586Durchsuche

ThinkPHPWie verstecke ich den Hintergrund? Im folgenden Artikel erfahren Sie, wie ThinkPHP Routing-Regeln geschickt nutzt, um den Hintergrund zu verbergen und so Ihre Website sicherer zu machen!

So konfigurieren Sie das Routing in ThinkPHP, um den Hintergrund auszublenden!

Wie wir alle wissen, können Sie, wenn das Backend-Modul des Thinkphp-Frameworks admin heißt, direkt über http://domainname/admin auf das Administrator-Backend zugreifen. Diese Zugriffsmethode ist sehr praktisch , aber es gibt auch große Probleme. Es gibt Sicherheitsrisiken. Hacker können Ihr Backend leicht erraten und dann brutale Gewalt anwenden, um das Backend zu knacken. Gibt es also Möglichkeiten, diese versteckte Gefahr zu beseitigen? Lassen Sie uns besprechen, wie Sie mithilfe von Routing-Regeln den Backend-Pfad ändern, um zu verhindern, dass Hacker unseren Backend-Eingang kennen. Es gibt viele Tutorials zum Ausblenden des Hintergrundadministrators im Internet, aber das wirklich Nützliche ist diese Routing-Regelmethode.

So konfigurieren Sie das Routing in ThinkPHP, um den Hintergrund auszublenden!

Der erste Schritt besteht darin, Einstellungsparameter im Hintergrund hinzuzufügen, die den Namen des Hintergrundmoduls ändern können

1,

So konfigurieren Sie das Routing in ThinkPHP, um den Hintergrund auszublenden!

2. Der Schlüsselcode zum Speichern der Einstellungen lautet wie folgt:

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

Hinweise:

  • admin_module ist der Schlüssel zum Speichern des Hintergrundmodulnamens in meiner Datenbank
  • APP_PATH ist eine Konstante der thinkphp5.0-Version, ändern Sie sie bitte selbst.

Der zweite Schritt besteht darin, die Konfigurationsinformationen der Website in application/common.php zu lesen

1. Die Hauptstruktur der Konfigurationsdatentabelle ist wie folgt:

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) Methode: Holen Sie sich den entsprechenden Wert basierend auf dem Schlüsselnamen

<?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;;
}

Hinzugefügt:

1 Wenn es sich nur um ein System für den persönlichen Gebrauch handelt und Sie nicht so mühsam sein möchten, können Sie die folgende Konfiguration auch direkt hinzufügen zu config.php:

return [
    // +----------------------------------------------------------------------
    // | 应用设置
    // +----------------------------------------------------------------------
	// 后台模块名
    &#39;admin_module&#39;           => &#39;myadmin&#39;,
]

2. Dann rufen Sie es direkt im Projekt auf:

Der dritte Schritt, Routeneinstellung application/route.php
$admin_module = Config(&#39;admin_module&#39;);

Der vierte Schritt, fügen Sie den Sprung hinzu () Methode zur Sprungüberprüfung im Login-Controller Login.php

1 Diese Methode „jump()“ ist eigentlich die vorgesehene Methode zum Sperren von Routen in unserem dritten Schritt

<?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;

2 Der Code in „jump()“ oben hat nur eine Funktion Das heißt, der Zugriff auf eine gesperrte Route ohne Anmeldung führt zu einem Sprung zur 404-Seite wie folgt:

So konfigurieren Sie das Routing in ThinkPHP, um den Hintergrund auszublenden!

3 Die Seite 404.html wird im Anwendungsverzeichnis abgelegt und der Code lautet wie folgt:

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;);
	}
}

4. So melden Sie sich ab

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

Originaladresse: https://juejin.cn /post/6981428649765371940

Weitere Programmierkenntnisse finden Sie unter:

Einführung in die Programmierung! !

Das obige ist der detaillierte Inhalt vonSo konfigurieren Sie das Routing in ThinkPHP, um den Hintergrund auszublenden!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen