mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-01-19 02:56:15 +00:00
Blackhole requests when the action is the blackhole callback.
When a user requests the blackhole callback as an action we should blackhole that request. The blackhole callback should not be URL accessible. Fixes #3496
This commit is contained in:
parent
2ba117eeda
commit
1117ad2f1c
2 changed files with 22 additions and 3 deletions
|
@ -218,6 +218,10 @@ class SecurityComponent extends Component {
|
|||
$controller->request->params['requested'] != 1
|
||||
);
|
||||
|
||||
if ($this->_action == $this->blackHoleCallback) {
|
||||
return $this->blackhole($controller, 'auth');
|
||||
}
|
||||
|
||||
if ($isPost && $isNotRequestAction && $this->validatePost) {
|
||||
if ($this->_validatePost($controller) === false) {
|
||||
return $this->blackHole($controller, 'auth');
|
||||
|
@ -309,11 +313,10 @@ class SecurityComponent extends Component {
|
|||
* @throws BadRequestException
|
||||
*/
|
||||
public function blackHole(Controller $controller, $error = '') {
|
||||
if ($this->blackHoleCallback == null) {
|
||||
if (!$this->blackHoleCallback) {
|
||||
throw new BadRequestException(__d('cake_dev', 'The request has been black-holed'));
|
||||
} else {
|
||||
return $this->_callback($controller, $this->blackHoleCallback, array($error));
|
||||
}
|
||||
return $this->_callback($controller, $this->blackHoleCallback, array($error));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -194,6 +194,22 @@ class SecurityComponentTest extends CakeTestCase {
|
|||
$this->Controller->Security->blackHole($this->Controller, 'csrf');
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure that directly requesting the blackholeCallback as the controller
|
||||
* action results in an exception.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testExceptionWhenActionIsBlackholeCallback() {
|
||||
$this->Controller->request->addParams(array(
|
||||
'controller' => 'posts',
|
||||
'action' => 'fail'
|
||||
));
|
||||
$this->assertFalse($this->Controller->failed);
|
||||
$this->Controller->Security->startup($this->Controller);
|
||||
$this->assertTrue($this->Controller->failed, 'Request was blackholed.');
|
||||
}
|
||||
|
||||
/**
|
||||
* test that initialize can set properties.
|
||||
*
|
||||
|
|
Loading…
Add table
Reference in a new issue