【问题标题】:Using Cakephp Security Component with default get parameter使用带有默认获取参数的 Cakephp 安全组件
【发布时间】:2015-12-04 16:47:06
【问题描述】:

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

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

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

提前致谢。

【问题讨论】:

    标签: security cakephp get cakephp-2.x


    【解决方案1】:

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

    我可以通过对位于 lib/Cake/View/Helper/ 的 CakePHP 的默认 FormHelper 进行一些更改来解决此问题。就我而言,我只需要在 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 数组中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      • 1970-01-01
      • 1970-01-01
      • 2015-11-13
      相关资源
      最近更新 更多