allthebest 發表於 2021-4-7 05:00:01

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

<br /><br />Discuz!默认的后台路径是 http://你的域名/admin.php<br /><br />因此很多站长不希望后台直接暴露出来让一些不法用户尝试登陆后台,造成一些安全隐患;<br /><br />隐藏后台路径一般有两种思路,第一种就是直接修改admin.php文件名称,但是这种方式,前后台要修改的文件比较多,包括所有第三方模版都要修改,而且还会造成有时候安装插件无法再使用问题;新一代黑客木马大都注意到修改admin.php名称的说。<br /><br />另一种思路,就是对admin.php增加访问权限,这就是本文要讲的方法,具体操作如下:<br /><br /><br />三种修改方法按需要选择其中一种即可。<br /><br />都是修改 admin.php文件<br /><br /><strong>A、必须在前台登录了,才能访问后台</strong><br /><br />在 $discuz-&gt;init(); 下方加入代码<br /><br /><ol><li>if(!$_G['uid']){<br /><li>&nbsp; &nbsp; header('HTTP/1.1 404 Not Found');<br /><li>&nbsp; &nbsp; header(&quot;status: 404 Not Found&quot;);<br /><li>&nbsp; &nbsp; echo '404 Not Found';<br /><li>&nbsp; &nbsp; exit;<br /><li>}</ol><br /><br /><strong>B、必须在前台登录了,且uid=1,才能访问后台</strong><br /><br />在 $discuz-&gt;init(); 下方加入代码<br /><ol><li>if($_G['uid']!=1){<br /><li>&nbsp; &nbsp; header('HTTP/1.1 404 Not Found');<br /><li>&nbsp; &nbsp; header(&quot;status: 404 Not Found&quot;);<br /><li>&nbsp; &nbsp; echo '404 Not Found';<br /><li>&nbsp; &nbsp; exit;<br /><li>}</ol><br /><br /><strong>C、必须在前台登录了,且uid在指定范围,才能访问后台</strong><br /><br />在 $discuz-&gt;init(); 下方加入代码<br /><ol><li>$uids=array(1,2,3,99);<br /><li>if(in_array($_G['uid'],$uids)){<br /><li>&nbsp; &nbsp; header('HTTP/1.1 404 Not Found');<br /><li>&nbsp; &nbsp; header(&quot;status: 404 Not Found&quot;);<br /><li>&nbsp; &nbsp; echo '404 Not Found';<br /><li>&nbsp; &nbsp; exit;<br /><li>}</ol><br /><br />修改完成后,非法直接访问后台的用户就直接报404错误了!后台<em>, </em>修改<em>, </em>直接<em>, </em>访问

三墨 發表於 2021-4-7 18:52:17

谢谢分享,用上了。

312196920 發表於 2021-4-8 20:01:50

谢谢分享

9axl 發表於 2021-4-8 21:13:24

感谢分享,已经修改了。

Punkhippie 發表於 2021-4-10 15:00:34

奇怪,使用第 3 種方法,UID 1 進入後台還是報 404

allthebest 發表於 2021-4-10 17:06:44

<br />没理由,检查一下各有权限进后台的 UID 才使用吧!

tkywr 發表於 2021-4-11 14:27:42

<br />代码要放在 $discuz-&gt;init(); 的下边,你可能放上边了

cordless 發表於 2021-4-21 16:18:13

<br /><br />确实是,放在下边第三种方法也报错。<br />不过修改了下第二种方法实现了第三种功能:<br /><ol><li>if($_G['uid']!=1 &amp;&amp; $_G['uid']!=2){<br /><li>&nbsp; &nbsp; header('HTTP/1.1 404 Not Found');<br /><li>&nbsp; &nbsp; header(&quot;status: 404 Not Found&quot;);<br /><li>&nbsp; &nbsp; echo '404 Not Found';<br /><li>&nbsp; &nbsp; exit;<br /><li>}</ol><br /><br />

志愿者 發表於 2022-7-21 18:24:29

<br />第三種方法是不是邏輯錯了?<br />應該是not 搞成了有在列表的404<br /><br />正確的:<br />$uids=array(1,2,3,99);<br />if !(in_array($_G['uid'],$uids)){<br />&nbsp; &nbsp; header('HTTP/1.1 404 Not Found');<br />&nbsp; &nbsp; header(&quot;status: 404 Not Found&quot;);<br />&nbsp; &nbsp; echo '404 Not Found';<br />&nbsp; &nbsp; exit;<br />}

橙色枫叶 發表於 2022-8-14 22:55:18

感谢楼主分享 用上了
頁: [1]
查看完整版本: Discuz!教程之禁止用户非法直接访问后台的方法!