查看: 95|回复: 9

[教程] Discuz!教程之禁止用户非法直接访问后台的方法!

[复制链接]

63

主题

383

回帖

0

积分

热心网友

金币
383
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2009-10-2
发表于 2021-4-7 05:00:01 | 显示全部楼层 |阅读模式


Discuz!默认的后台路径是 http://你的域名/admin.php

因此很多站长不希望后台直接暴露出来让一些不法用户尝试登陆后台,造成一些安全隐患;

隐藏后台路径一般有两种思路,第一种就是直接修改admin.php文件名称,但是这种方式,前后台要修改的文件比较多,包括所有第三方模版都要修改,而且还会造成有时候安装插件无法再使用问题;新一代黑客木马大都注意到修改admin.php名称的说。

另一种思路,就是对admin.php增加访问权限,这就是本文要讲的方法,具体操作如下:


三种修改方法按需要选择其中一种即可。

都是修改 admin.php文件

A、必须在前台登录了,才能访问后台

在 $discuz->init(); 下方加入代码

  1. if(!$_G['uid']){
  2.     header('HTTP/1.1 404 Not Found');
  3.     header("status: 404 Not Found");
  4.     echo '404 Not Found';
  5.     exit;
  6. }


B、必须在前台登录了,且uid=1,才能访问后台

在 $discuz->init(); 下方加入代码
  1. if($_G['uid']!=1){
  2.     header('HTTP/1.1 404 Not Found');
  3.     header("status: 404 Not Found");
  4.     echo '404 Not Found';
  5.     exit;
  6. }


C、必须在前台登录了,且uid在指定范围,才能访问后台

在 $discuz->init(); 下方加入代码
  1. $uids=array(1,2,3,99);
  2. if(in_array($_G['uid'],$uids)){
  3.     header('HTTP/1.1 404 Not Found');
  4.     header("status: 404 Not Found");
  5.     echo '404 Not Found';
  6.     exit;
  7. }


修改完成后,非法直接访问后台的用户就直接报404错误了!后台, 修改, 直接, 访问
回复

使用道具 举报

1

主题

12

回帖

0

积分

热心网友

金币
12
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2008-8-19
发表于 2021-4-7 18:52:17 | 显示全部楼层
谢谢分享,用上了。
回复

使用道具 举报

14

主题

9

回帖

0

积分

热心网友

金币
9
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2009-8-22
发表于 2021-4-8 20:01:50 | 显示全部楼层
谢谢分享
回复

使用道具 举报

2

主题

38

回帖

0

积分

热心网友

金币
38
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2008-2-24
发表于 2021-4-8 21:13:24 | 显示全部楼层
感谢分享,已经修改了。
回复

使用道具 举报

0

主题

1

回帖

0

积分

热心网友

金币
1
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2011-4-27
发表于 2021-4-10 15:00:34 | 显示全部楼层
奇怪,使用第 3 種方法,UID 1 進入後台還是報 404
回复

使用道具 举报

63

主题

383

回帖

0

积分

热心网友

金币
383
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2009-10-2
 楼主| 发表于 2021-4-10 17:06:44 | 显示全部楼层

没理由,检查一下各有权限进后台的 UID 才使用吧!
回复

使用道具 举报

8

主题

12

回帖

0

积分

热心网友

金币
12
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2012-1-5
发表于 2021-4-11 14:27:42 | 显示全部楼层

代码要放在 $discuz->init(); 的下边,你可能放上边了
回复

使用道具 举报

0

主题

13

回帖

0

积分

热心网友

金币
13
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2008-5-19
发表于 2021-4-21 16:18:13 | 显示全部楼层


确实是,放在下边第三种方法也报错。
不过修改了下第二种方法实现了第三种功能:
  1. if($_G['uid']!=1 && $_G['uid']!=2){
  2.     header('HTTP/1.1 404 Not Found');
  3.     header("status: 404 Not Found");
  4.     echo '404 Not Found';
  5.     exit;
  6. }


回复

使用道具 举报

5

主题

15

回帖

0

积分

热心网友

金币
15
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2010-11-24
发表于 2022-7-21 18:24:29 | 显示全部楼层

第三種方法是不是邏輯錯了?
應該是not 搞成了有在列表的404

正確的:
$uids=array(1,2,3,99);
if !(in_array($_G['uid'],$uids)){
    header('HTTP/1.1 404 Not Found');
    header("status: 404 Not Found");
    echo '404 Not Found';
    exit;
}
回复

使用道具 举报

2

主题

1

回帖

0

积分

热心网友

金币
1
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2009-11-18
发表于 2022-8-14 22:55:18 | 显示全部楼层
感谢楼主分享 用上了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部