如何解决限制CakePHP中的HTTP访问
我有一个从CakePHP的AppController扩展的Controller类。
这个Controller类具有一个公共函数..可以说testFunc()
class xyzController extends AppController {
..
..
public function testFunc($params,$auth_username)
{
..
..
}
}
我已将此函数公开,因为我需要从也从AppController扩展过来的另一个Controller调用它。
class abcController extends AppController {
..
..
public function callingFunc()
{
...
$controller = new xyzController($this->request,$this->response);
$controller->testFunc($params,$username);
}
..
..
}
但是,由于我将其公开,所以我看到可以使用curl命令访问下面的https路径testFunc()
https://[ip_address]/xyz/testFunc/arg=test/root
如您所见,以上路径将“ root”作为testFunc()的参数,并向在curl命令中使用上述路径的任何人提供完全访问权限。
我的要求是消除此安全问题。
我对PHP和CakePHP完全陌生。有人可以指点一下我该如何进行吗?
解决方法
“我需要从另一个控制器调用它”。几乎从来没有这样,这通常表明设计有缺陷。如果testFunc
不能通过浏览器访问,则将其移动到两个控制器都可以访问而无需成为公共成员的位置。例如,将其设置为AppController
的受保护(甚至是私有)成员,或者如果它正在执行模型特定的工作,则可以将其移至该模型的表类。
解决方案非常简单。
公共函数_testFunc($ params,$ auth_usernmae)将起到神奇作用。
在Cakephp中,如果该函数以下划线作为前缀,则无法使用URI进行访问,但可以从其他函数内部进行访问。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。