Thinkphp5开启强制路由代码示例详解(防远程攻击必备)
近期thinkphp5在2018年12月9日及2019年1月11日接连爆出的两个高危漏洞,再有很多人反映更新补丁或者升级以后还有被入侵的事情,分两个步骤处理:一:把受影响的网站程序文件最好直接用备份替换,对方很可能留了多个后门文件,如果后门文件没删除干净,还是会被持续更改首页跳转的,升级也没用;二,开启强制路由模式;
以上的说明,切记一定要保证木马文件查杀赶紧,再做处理,备份直接替换是最好的办法,当然如果你没有备份的习惯就只能自己手动查杀,或者请安全公司处理了;
但是个人在开启强制路由模式的时候,碰到两个问题,下面就说下这个两个问题,
问题1:点击网站链接直接进去会打不开,错误提示,路由未定义
问题2:比如后台的页面或者登陆页面,登陆页面可以正常展示,点击登陆的时候,由于需要post提交表单的操作,错误提示,路由未定义;
强制路由设置:
文件:application->config.php;
配置:常规配置路由规则,请自行参照官方手册,开启强制路由以后,所有的方法都需要配置,否则不能正常访问;这里不赘述;https://www.kancloud.cn/manual/thinkphp5/118019
实例解决方案:
提示:做修改之前一定要备份原有代码,因为每个人的开发环境,开发方式都可能有所不同,若有不可预见错误,可及时恢复;
A:问题1解决方案:
文件:application->route.php;
亲测本人开发环境及网站可用,此问题即可解决;
B:问题2解决方案:
前台及后台纯展示页面在开启强制路由以后展示没问题的,但是需要form表单提交数据的操作都会报错;
理论原因:常规的路由页面方法都是get,比如上图首页的路由,但是提交表单的时候一般我用的都是post方法,所以需要在控制器里面拆分展示和提交表单的方法,前端页面提交方法地址也需要修改,路由里面也需要分开设置即可;下面我将会以一个实例分别说明登录页面及登录操作
登录操作:
第一步:拆分控制器方法;
原始的代码如下:
拆分成两个方法如下:
第二步:路由文件设置:
文件:application->route.php;
二者区别在于方法,登录页面的路由方法是get,操作的话就是post;
第三步:login登录页面form表单的提交的action也需要修改:
☆☆☆小提示,控制器写方法的时候,成功跳转的链接请务必写完整
模块/控制器/方法;其他所有的方法请务必按这种思想修改完成;
文章预告:下个文章将会写一写https的设置须知以及可能有的一些小坑;