使用带有默认 get 参数的 Cakephp 安全组件
Using Cakephp Security Component with default get parameter
我对 CakePHP 的安全组件有疑问。我的网站有一个默认的 get 参数来处理不同的语言。我已经覆盖了 AppController
中的默认值 redirect function
,这样每次进行重定向或 post 时,我都会将语言获取参数附加到 URL。
一切正常,现在我正在尝试实施 CakePHP 的安全组件。可以想象,问题是安全组件阻止了我尝试删除某些数据库条目的尝试,因为 get 参数:(The request has been black-holed...)
所以我的问题是,有什么方法可以将安全组件与我的 get 参数一起使用。我正在考虑将某些获取参数列入白名单之类的想法。
提前致谢。
我终于找到了解决问题的方法。我不知道这是否是最好的方法,但也许它仍然可以帮助某人......所以首先要澄清一下:我的请求被黑洞 (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
数组。
我对 CakePHP 的安全组件有疑问。我的网站有一个默认的 get 参数来处理不同的语言。我已经覆盖了 AppController
中的默认值 redirect function
,这样每次进行重定向或 post 时,我都会将语言获取参数附加到 URL。
一切正常,现在我正在尝试实施 CakePHP 的安全组件。可以想象,问题是安全组件阻止了我尝试删除某些数据库条目的尝试,因为 get 参数:(The request has been black-holed...)
所以我的问题是,有什么方法可以将安全组件与我的 get 参数一起使用。我正在考虑将某些获取参数列入白名单之类的想法。
提前致谢。
我终于找到了解决问题的方法。我不知道这是否是最好的方法,但也许它仍然可以帮助某人......所以首先要澄清一下:我的请求被黑洞 (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
数组。