使用控制器,模块或操作名称来设置包含路径是否安全?

时间:2009-12-02 13:46:09

标签: security zend-framework

我想根据所访问的模块设置包含路径(以及其他路径,如视图脚本路径)。这样安全吗?如果没有,我怎样才能安全地动态设置包含路径?我正在做类似下面代码的事情(这是来自控制器插件。)

public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) {

    $modName = $request->getModuleName();
    $modulePath = APP_PATH.'/modules/'.$modName.'/classes';
    set_include_path(get_include_path().PATH_SEPARATOR.$modulePath);

}

2 个答案:

答案 0 :(得分:0)

我不确定它是否安全,但这听起来不是最好的做法。如果有人输入了像../admin/这样的模块名称怎么办?您应该在使用之前清理模块名称。

答案 1 :(得分:0)

只要您在使用它们之前清理变量就可以了,但效果不是很好。在运行时摆弄包含路径会导致严重的影响性能。

您是否尝试为每个模块加载模型/帮助程序?你应该看看Zend_Application

  

Zend_Application为应用程序提供了一个引导工具,它提供了可重用的资源,基于通用和模块的引导类和依赖性检查。它还负责设置PHP环境,默认引入自动加载

我的重点