0

我对 CakePHP 的安全组件有疑问。我的网站有一个用于处理不同语言的默认获取参数。我已经覆盖了redirect function我的默认值,AppController因此每次进行重定向或发布时,我都会将语言获取参数附加到 URL。

这一切都很好,现在我正在尝试实现 CakePHP 的安全组件。正如您可以想象的那样,问题在于安全组件阻止了我尝试删除某些数据库条目的尝试,因为 get 参数:(The request has been black-holed...)

所以我的问题是,有什么方法可以将安全组件与我的 get 参数一起使用。我正在考虑将某些获取参数列入白名单之类的想法。

提前致谢。

4

1 回答 1

0

我终于找到了解决我的问题的方法。我不知道这是否是最好的方法,但也许它仍然可以帮助某人......所以首先澄清一下:我的请求被黑洞,(form validation error, or a controller/action mismatch error)因为在安全令牌生成后我在我的 AppController 中附加了语言获取参数.

我可以通过对位于lib/Cake/View/Helper/. 就我而言,我只需要在 postLink 函数中添加几行:

if (isset($this->request->query['lng']) && in_array($this->request->query['lng'], array('eng', 'de', 'ru')) {

    $lng = Sanitize::paranoid($this->request->query['company'], array('!','\'','?','_','.',' ','-', '['));

    if(is_array($url) && !isset($url['?'])){
       $url['?'] = array('lng' => $lng);
    }
}

$formUrl = $this->url($url);

所以我在这里做的是:

首先,我检查了是否'lng'给出了名为的请求查询参数,然后在进行了一些安全检查(in_array()Sanitize::paranoid)之后,我只需要将此参数添加到$url数组中。

于 2016-02-04T11:14:53.123 回答