Class SecurityComponent
The Security Component creates an easy way to integrate tighter security in your application. It provides methods for various tasks like:
- Restricting which HTTP methods your application accepts.
- CSRF protection.
- Form tampering protection
- Requiring that SSL be used.
- Limiting cross controller communication.
Copyright: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
License: MIT License
Link: http://book.cakephp.org/2.0/en/core-libraries/components/security-component.html
Located at Cake/Controller/Component/SecurityComponent.php
Method Detail
_authRequiredsource protected
_authRequired( Controller $controller )
Check if authentication is required
Parameters
-
Controller
$controller
- Instantiating controller
Returns
boolean|null
True if authentication required
_callbacksource protected
_callback( Controller $controller , string $method , array $params array() )
Calls a controller callback method
Parameters
-
Controller
$controller
- Controller to run callback on
- string
$method
- Method to execute
- array
$params
optional array() - Parameters to send to method
Returns
mixed
Controller callback method's response
Throws
BadRequestException
When a the blackholeCallback is not callable.
_expireTokenssource protected
_expireTokens( array $tokens )
Expire CSRF nonces and remove them from the valid tokens. Uses a simple timeout to expire the tokens.
Parameters
- array
$tokens
- An array of nonce => expires.
Returns
array
An array of nonce => expires.
_methodsRequiredsource protected
_methodsRequired( Controller $controller )
Check if HTTP methods are required
Parameters
-
Controller
$controller
- Instantiating controller
Returns
boolean
True if $method is required
_requireMethodsource protected
_requireMethod( string $method , array $actions array() )
Sets the actions that require a $method HTTP request, or empty for all actions
Parameters
- string
$method
- The HTTP method to assign controller actions to
- array
$actions
optional array() - Controller actions to set the required HTTP method to.
_secureRequiredsource protected
_secureRequired( Controller $controller )
Check if access requires secure connection
Parameters
-
Controller
$controller
- Instantiating controller
Returns
boolean
True if secure connection required
_validateCsrfsource protected
_validateCsrf( Controller $controller )
Validate that the controller has a CSRF token in the POST data and that the token is legit/not expired. If the token is valid it will be removed from the list of valid tokens.
Parameters
-
Controller
$controller
- A controller to check
Returns
boolean
Valid csrf token.
_validatePostsource protected
_validatePost( Controller $controller )
Validate submitted form
Parameters
-
Controller
$controller
- Instantiating controller
Returns
boolean
true if submitted form is valid
blackHolesource public
blackHole( Controller $controller , string $error '' )
Black-hole an invalid request with a 400 error or custom callback. If SecurityComponent::$blackHoleCallback is specified, it will use this callback by executing the method indicated in $error
Parameters
-
Controller
$controller
- Instantiating controller
- string
$error
optional '' - Error method
Returns
mixed
If specified, controller blackHoleCallback's response, or no return otherwise
Throws
BadRequestException
BadRequestException
See
SecurityComponent::$blackHoleCallback
Link
http://book.cakephp.org/2.0/en/core-libraries/components/security-component.html#handling-blackhole-callbacksgenerateTokensource public
generateToken( CakeRequest $request )
Manually add CSRF token information into the provided request object.
Parameters
-
CakeRequest
$request
- The request object to add into.
Returns
boolean
bool
requireAuthsource public
requireAuth( )
Sets the actions that require whitelisted form submissions.
Adding actions with this method will enforce the restrictions set in SecurityComponent::$allowedControllers and SecurityComponent::$allowedActions.
Link
http://book.cakephp.org/2.0/en/core-libraries/components/security-component.html#SecurityComponent::requireAuthrequireDeletesource public
requireDelete( )
Sets the actions that require a DELETE request, or empty for all actions
Deprecated
3.0.0 Use CakeRequest::onlyAllow() instead.requireGetsource public
requireGet( )
Sets the actions that require a GET request, or empty for all actions
Deprecated
3.0.0 Use CakeRequest::onlyAllow() instead.requirePostsource public
requirePost( )
Sets the actions that require a POST request, or empty for all actions
Deprecated
3.0.0 Use CakeRequest::onlyAllow() instead.Link
http://book.cakephp.org/2.0/en/core-libraries/components/security-component.html#SecurityComponent::requirePostrequirePutsource public
requirePut( )
Sets the actions that require a PUT request, or empty for all actions
Deprecated
3.0.0 Use CakeRequest::onlyAllow() instead.requireSecuresource public
requireSecure( )
Sets the actions that require a request that is SSL-secured, or empty for all actions
Link
http://book.cakephp.org/2.0/en/core-libraries/components/security-component.html#SecurityComponent::requireSecurestartupsource public
startup( Controller $controller )
Component startup. All security checking happens here.
Parameters
-
Controller
$controller
- Instantiating controller
Overrides
Component::startup()
Methods inherited from Component
__constructsource public
__construct( ComponentCollection $collection , array $settings array() )
Constructor
Parameters
-
ComponentCollection
$collection
- A ComponentCollection this component can use to lazy load its components
- array
$settings
optional array() - Array of configuration settings.
Overrides
Object::__construct()
__getsource public
__get( string $name )
Magic method for lazy loading $components.
Parameters
- string
$name
- Name of component to get.
Returns
mixed
A Component object or null.
beforeRedirectsource public
beforeRedirect( Controller $controller , string|array $url , integer $status null , boolean $exit true )
Called before Controller::redirect(). Allows you to replace the URL that will be redirected to with a new URL. The return of this method can either be an array or a string.
If the return is an array and contains a 'url' key. You may also supply the following:
-
status
The status code for the redirect -
exit
Whether or not the redirect should exit.
If your response is a string or an array that does not contain a 'url' key it will be used as the new URL to redirect to.
Parameters
-
Controller
$controller
- Controller with components to beforeRedirect
- string|array
$url
- Either the string or URL array that is being redirected to.
- integer
$status
optional null - The status code of the redirect
- boolean
$exit
optional true - Will the script exit.
Returns
array|null
Either an array or null.
Link
http://book.cakephp.org/2.0/en/controllers/components.html#Component::beforeRedirectbeforeRendersource public
beforeRender( Controller $controller )
Called before the Controller::beforeRender(), and before the view class is loaded, and before Controller::render()
Parameters
-
Controller
$controller
- Controller with components to beforeRender
Link
http://book.cakephp.org/2.0/en/controllers/components.html#Component::beforeRenderinitializesource public
initialize( Controller $controller )
Called before the Controller::beforeFilter().
Parameters
-
Controller
$controller
- Controller with components to initialize
Link
http://book.cakephp.org/2.0/en/controllers/components.html#Component::initializeshutdownsource public
shutdown( Controller $controller )
Called after Controller::render() and before the output is printed to the browser.
Parameters
-
Controller
$controller
- Controller with components to shutdown
Link
http://book.cakephp.org/2.0/en/controllers/components.html#Component::shutdownMethods inherited from Object
_mergeVarssource protected
_mergeVars( array $properties , string $class , boolean $normalize true )
Merges this objects $property with the property in $class' definition. This classes value for the property will be merged on top of $class'
This provides some of the DRY magic CakePHP provides. If you want to shut it off, redefine this method as an empty function.
Parameters
- array
$properties
- The name of the properties to merge.
- string
$class
- The class to merge the property with.
- boolean
$normalize
optional true - Set to true to run the properties through Hash::normalize() before merging.
_setsource protected
_set( array $properties array() )
Allows setting of multiple properties of the object in a single line of code. Will only set properties that are part of a class declaration.
Parameters
- array
$properties
optional array() - An associative array containing properties and corresponding values.
_stopsource protected
_stop( integer|string $status 0 )
Stop execution of the current script. Wraps exit() making testing easier.
Parameters
- integer|string
$status
optional 0 - see http://php.net/exit for values
dispatchMethodsource public
dispatchMethod( string $method , array $params array() )
Calls a method on this object with the given parameters. Provides an OO wrapper for call_user_func_array
Parameters
- string
$method
- Name of the method to call
- array
$params
optional array() - Parameter list to use when calling $method
Returns
mixed
Returns the result of the method call
logsource public
log( string $msg , integer $type LOG_ERR , null|string|array $scope null )
Convenience method to write a message to CakeLog. See CakeLog::write() for more information on writing to logs.
Parameters
- string
$msg
- Log message
- integer
$type
optional LOG_ERR - Error type constant. Defined in app/Config/core.php.
- null|string|array
$scope
optional null - The scope(s) a log message is being created in. See CakeLog::config() for more information on logging scopes.
Returns
boolean
Success of log write
requestActionsource public
requestAction( string|array $url , array $extra array() )
Calls a controller's method from any location. Can be used to connect controllers together or tie plugins into a main application. requestAction can be used to return rendered views or fetch the return value from controller actions.
Under the hood this method uses Router::reverse() to convert the $url parameter into a string URL. You should use URL formats that are compatible with Router::reverse()
Passing POST and GET data
POST and GET data can be simulated in requestAction. Use $extra['url']
for GET data. The $extra['data']
parameter allows POST data simulation.
Parameters
- string|array
$url
- String or array-based URL. Unlike other URL arrays in CakePHP, this URL will not automatically handle passed and named arguments in the $url parameter.
- array
$extra
optional array() - if array includes the key "return" it sets the AutoRender to true. Can also be used to submit GET/POST data, and named/passed arguments.
Returns
mixed
Boolean true or false on success/failure, or contents of rendered action if 'return' is set in $extra.
toStringsource public
toString( )
Object-to-string conversion. Each class can override this method as necessary.
Returns
string
The name of this class
Properties summary
Properties inherited from Component
$_Collectionsource
protected ComponentCollection
Component collection class used to lazy load components.
$_componentMapsource
protected array
A component lookup table used to lazy load component objects.
array()
© 2005–2016 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
http://api.cakephp.org/2.7/class-SecurityComponent.html