文章目錄

#MVC中的路由模块

routing或者dispatch模块负责将请求的URL映射到具体的controler/action上。比如一个请求url如下:

http://localhost/news/economics/param1/param2

如果不使用mod_rewrite的话应该是下面这种形式。

http://localhost/index.php?route=news/economics/param1/param2

路由的类负责将URL中的参数解析出来,在我们这个例子中

controller: NewsController.php
action method: EconomicsAction
parameters: param1 and param2

然后路由类需要实例化控制器,把请求参数传到调用方法里。这就是整个路由模块需要实现的功能。

#路由模块容易出现的问题

由于路由模块的功能要求,一般都是解析url中参数去包含对应的control文件。所以如果对相关参数没有进行限制则十分容易出现文件包含的问题。

案例1YXCMS前台getshell(有条件),不过由于路由这个地方的功能要求,一般来说包含是需要截断才能利用的。

案例2easypanel文件包含

第二类容易出现的问题就是绕过一些限制,直接调用敏感方法。比如设置密码的方法等。

文章目錄