在 CakePHP 中限制 HTTP 访问



我有一个控制器类,它从 CakePHP 中的 AppController 扩展而来。 并且这个控制器类有一个公共函数..比方说testFunc()

class xyzController extends AppController {
..
..
public function testFunc($params, $auth_username)
{
..
..
}
}

我已经公开了这个函数,因为我需要从另一个控制器调用它,该控制器也从 AppController 扩展。

class abcController extends AppController {
..
..
public function callingFunc()
{
...
$controller = new xyzController($this->request, $this->response);
$controller->testFunc($params, $username);
}
..
..
}

但是由于我将其公开,我看到可以使用以下https路径的curl命令访问testFunc()

https://[ip_address]/xyz/testFunc/arg=test/root

如您所见,上面的路径将"root"作为testFunc()的参数,并为在curl命令中使用上述路径的任何人提供完全访问权限。

我的要求是消除此安全问题。

我对PHP和CakePHP完全陌生。有人可以给我如何继续的任何指示吗?

">

我需要从另一个控制器调用它"。这几乎从来都不是真的,它通常表明设计有缺陷。如果testFunc不是通过浏览器访问的,则将其移动到两个控制器都可以访问它的位置,而无需它是公共成员。例如,使其成为AppController的受保护(甚至私有)成员,或者如果它正在执行特定于模型的事情,也许可以将其移动到该模型的表类中。

解决方案非常简单。

公共函数_testFunc($params,$auth_usernmae)将发挥魔力。

在 Cakephp 中,如果函数有下划线作为前缀,则无法使用 URI 访问它,但可以从其他函数内部访问。

最新更新