Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cakephp 使用SecurityComponent::requireSecure()将黑名单改为白名单_Cakephp - Fatal编程技术网

Cakephp 使用SecurityComponent::requireSecure()将黑名单改为白名单

Cakephp 使用SecurityComponent::requireSecure()将黑名单改为白名单,cakephp,Cakephp,我想使用CakePHP强制通过SSL发出应用程序请求,使用requireSecure() 我的问题是,默认情况下这是一种黑名单方法——默认情况下允许不安全的访问,除非该控制器中明确禁止。我想切换到白名单方法——默认情况下拒绝不安全的访问,除非我在该控制器中明确允许 此功能是否内置于SecurityComponent中?如果没有,如何手动设置?默认情况下,这似乎不是内置的。您可以通过创建控制器的$requireSecure属性,然后在AppController::beforeFilter()中有条

我想使用CakePHP强制通过SSL发出应用程序请求,使用
requireSecure()

我的问题是,默认情况下这是一种黑名单方法——默认情况下允许不安全的访问,除非该控制器中明确禁止。我想切换到白名单方法——默认情况下拒绝不安全的访问,除非我在该控制器中明确允许


此功能是否内置于SecurityComponent中?如果没有,如何手动设置?

默认情况下,这似乎不是内置的。您可以通过创建控制器的
$requireSecure
属性,然后在
AppController::beforeFilter()
中有条件地调用
requireSecure()
来模拟此情况。以下是您将如何实施它:

AppController.php:

public $requireSecure = true;

public function beforeFilter() {
    if ($this->requireSecure) {
        $blacklist = is_array($this->requireSecure) ? $this->requireSecure : array('*');
        $this->Security->requireSecure($blacklist);
    }
}
白名单控制器:

public $requireSecure = false;
控制器,因方法而异(请注意,
$requireSecure
是一个黑名单):


这实现了默认情况下需要SSL的目标,但如果需要,可以在控制器中显式覆盖此要求。

我对在CakePHP中构建的应用程序中强制使用SSL感兴趣。但是,将所有http请求重定向到https(这反过来又会强制使用ssl)不是更好吗?从用户的角度来看,这似乎更微妙,因为他们只是重定向,而不是在使用错误的协议时出现安全错误。作者试图避免中间人攻击。绝对是一个巨大的可用性问题,黑洞是一个糟糕的解决方案。我不是这方面的专家,但我相信这个问题有最好的解决办法。
public $requireSecure = array('login');