第十五章:第3节论坛系统(BBS)管理员登录入口安全问题讲解

更新于:2018-03-25 21:01:20

网上那么多网站,不是他们的管理员,像我们是很难知道后台登录入口网址的。没错,后台关乎网站的安全,基本上有安全意识的都会对后台登录网址做隐藏处理。像我们目前的后台登录网址https://www.phpnanshen.com/admin/login就不行,太明显,别人很容易猜得到。


1)第一步


1.png


修改登录页方法名,比如把“index”随便换成“wdxht”


那登录页的URL就变成了https://www.phpnanshen.com/admin/login/wdxht


当然我们也可以直接重写后台入口的URL路由,那原来的访问地址会失效。不过一定要注意,方法名不要是“index”。


说明下:


Route::rule('/wdxht','admin/login/index');

虽然URL“https://www.phpnanshen.com/admin/login/index”失效了,但“https://www.phpnanshen.com/admin/login”依然可以访问。


这样重写路由没什么作用了。


我们后台模块基本上不用为URL重写路由。写路由都是对外公布的URL,像后台的URL本来都是要保持神秘的,就没必要重写URL。


访问下https://www.phpnanshen.com/admin/login


1.png


报了一个错误。这个大家不用担心,因为楠神现在用的开发环境,当转成正式环境


1.png


就会报个404错误。


回顾前面,Common控制器类



大家知道14行代码,楠神为什么不做错误跳转,而是做个404错误页面显示?其目的就是迷惑访问者,让他分不清访问的后台页面到底存不存在。


2)第二步


除了修改登录方法名,还可以做进一步的判断限制


1.png


g_verify_source_ip函数:验证访问者IP地址是否属于允许范围


16行,楠神加了一个IP限制,如果访问者ip地址不属于允许的访问内,则显示404错误页面。


如果管理员(本地网络)IP地址是固定的,那后台访问就会很安全。ip地址是比较难伪造的。


1.png


不仅登录页方法做限制处理,ajax登录处理方法也要做下IP限制和来源网址限制。


1.png


3)第三步


我们的后台模块是不是非得是“admin”,登录控制器非得是“Login”。


答案:当然不是了。


我不仅可以修改方法名,也可以修改模块名,也可以修改控制器名。


注意:如果要更换模块的名字,该模块下每个控制器的命名空间也要做下修改。


举例说明:


假如后台模块有“admin”改成“newadmin”


访问URL:https://www.phpnanshen.com/newadmin/login/wdxht


最终执行的代码是:实例化Login控制器类,调用wdxht方法。


怎么实例化Login控制器类?TP框架会这样执行代码:“new \app\newadmin\controller\Login;”


如果Login控制器类的命名空间还是“app\admin\controller”,那TP框架会找不到Login控制器类的。


这点需要注意,修改模块名还是比较麻烦的。


从这里我们也获取到一个信息,那就是TP框架中每个类的命名空间名字不能乱写的,要与类文件所在的目录一一对应。有了正确命名空间的类文件,TP框架可以自动把类文件加载进来


有关管理员登录入口安全问题就讲这些,下节我们实现一个安全的功能,就是如何让同一管理员账号不能在两个浏览器同时处于登陆状态。


本节学习代码》》》