查看: 276|回复: 9

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

[复制链接]

145

主题

351

回帖

612

积分

高级会员

积分
612
发表于 2024-1-4 13:28:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

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

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


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

都是修改 admin.php文件

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

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

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

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

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

在 $discuz->init(); 下方加入代码
  1. $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;}
复制代码

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

免责声明

1.本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
2.如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。

上一篇:优化触屏版图片裁剪样式及版块帖子列表的视频显示 New
下一篇:优化手机版导读和版块的帖子列表展示数量 New

回复

使用道具 举报

159

主题

389

回帖

665

积分

高级会员

积分
665
发表于 2024-1-4 13:29:04 | 显示全部楼层
谢谢分享,用上了。
回复 支持 反对

使用道具 举报

145

主题

351

回帖

612

积分

高级会员

积分
612
楼主 发表于 2024-1-4 13:29:37 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

114

主题

372

回帖

559

积分

高级会员

积分
559
发表于 2024-1-4 13:30:37 | 显示全部楼层
感谢分享,已经修改了。
回复 支持 反对

使用道具 举报

170

主题

381

回帖

666

积分

高级会员

积分
666
发表于 2024-1-4 13:31:14 | 显示全部楼层
奇怪,使用第 3 種方法,UID 1 進入後台還是報 404
回复 支持 反对

使用道具 举报

3992

主题

353

回帖

4482

积分

论坛元老

积分
4482
发表于 2024-1-4 13:31:59 | 显示全部楼层
没理由,检查一下各有权限进后台的 UID 才使用吧!
回复 支持 反对

使用道具 举报

3992

主题

353

回帖

4482

积分

论坛元老

积分
4482
发表于 2024-1-4 13:32:58 | 显示全部楼层
代码要放在 $discuz->init(); 的下边,你可能放上边了
回复 支持 反对

使用道具 举报

145

主题

351

回帖

612

积分

高级会员

积分
612
楼主 发表于 2024-1-4 13:33:52 | 显示全部楼层
确实是,放在下边第三种方法也报错。
不过修改了下第二种方法实现了第三种功能:
  1. if($_G['uid']!=1 && $_G['uid']!=2){    header('HTTP/1.1 404 Not Found');    header("status: 404 Not Found");    echo '404 Not Found';    exit;}
复制代码
回复 支持 反对

使用道具 举报

128

主题

370

回帖

595

积分

高级会员

积分
595
发表于 2024-1-4 13:34:21 | 显示全部楼层
allthebest 发表于 2021-4-10 17:06
没理由,检查一下各有权限进后台的 UID 才使用吧!
第三種方法是不是邏輯錯了?
應該是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;
}
回复 支持 反对

使用道具 举报

114

主题

372

回帖

559

积分

高级会员

积分
559
发表于 2024-1-4 13:34:28 | 显示全部楼层
感谢楼主分享 用上了
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表