CsrfFilter
Prevent Cross Site Request Forgery (CSRF) attacks when using cookie-based authentication, as follows:
-
When a session is created or updated for a client, generate a CSRF token as a hash of the session cookie.
-
Send the token in a response header to the client, and require the client to provide that header in subsequent requests.
-
In subsequent requests, compare the provided token to the generated token.
-
If the token isn’t provided or can’t be validated, reject the request and return a valid CSRF token transparently in the response header.
Rogue websites that attempt CSRF attacks operate in a different website domain to the targeted website. Because of same-origin policy, rogue websites can’t access a response from the targeted website, and cannot, therefore, access the CSRF token.
Usage
{
"name": string,
"type": "CsrfFilter",
"config": {
"cookieName": configuration expression<string>,
"headerName": configuration expression<string>,
"excludeSafeMethods": configuration expression<boolean>,
"failureHandler": Handler reference
}
}
Properties
"cookieName"
: configuration expression<string>, required-
The name of the HTTP session cookie used to store the session ID. For example, use the following cookie names for the following processes:
-
SSO with the SingleSignOnFilter: Use the name of the AM session cookie. You can find more information in Find the AM session cookie name.
-
CDSSO with the CrossDomainSingleSignOnFilter: Use the name configured in
authCookie.name
. -
OpenID Connect with the AuthorizationCodeOAuth2ClientFilter: Use the name of the PingGateway HTTP session cookie (default,
IG_SESSIONID
). You can find more information about the PingGateway session cookie in admin.json. -
SAML: Use the name of the PingGateway HTTP session cookie (default,
IG_SESSIONID
). You can find more information about the PingGateway session cookie in admin.json.
-
"headerName"
: configuration expression<string>, optional-
The name of the header that carries the CSRF token. The same header is used to create and verify the token.
Default:
X-CSRF-Token
"excludeSafeMethods"
: configuration expression<boolean>, optional-
Whether to exclude GET, HEAD, and OPTION methods from CSRF testing. In most cases, these methods are assumed as safe from CSRF.
Default:
true
"failureHandler"
: Handler reference, optional-
Handler to treat the request if the CSRF the token isn’t provided or can’t be validated. Provide an inline handler declaration, or the name of a handler object defined in the heap.
Although PingGateway returns the CSRF token transparently in the response header, this handler cannot access the CSRF token.
Default: Handler that generates
HTTP 403 Forbidden
.
Example
You can find an example of how to harden protection against CSRF attacks in CSRF protection.
{
"name": "CsrfFilter-1",
"type": "CsrfFilter",
"config": {
"cookieName": "openig-jwt-session",
"headerName": "X-CSRF-Token",
"excludeSafeMethods": true
}
}