5.0版本
在think\App类的module方法的获取控制器的代码后面加上
if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) { throw new HttpException(404, 'controller not exists:' . $controller); }
如:App.php的代码中,大概371行下面
// 获取控制器名 $controller = strip_tags($result[1] ?: $config['default_controller']); // 修复5.0漏洞 if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) { throw new HttpException(404, 'controller not exists:' . $controller); } $controller = $convert ? strtolower($controller) : $controller;
5.1版本
在think\route\dispatch\Url类的parseUrl方法,解析控制器后加上
if ($controller && !preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) { throw new HttpException(404, 'controller not exists:' . $controller); }
我用的是5.0的,所以5.1具体代码加在何处,大家看下源码注释加在其后面即可
评论前必须登录!
注册