Valtimo documentation v1
Valtimo 11
Valtimo 11
  • Introduction
    • Overview
    • Architectural overview
    • Available modules
      • Dashboards
      • Documents
      • Form flow
      • Form links (deprecated)
      • Plugins
    • How to contribute
    • Style guide for contributing
  • Getting started
    • First dive into Valtimo
      • Start as Docker containers
      • Creating your own Valtimo implementation
    • Compatibility matrix
    • Components
      • Valtimo List
    • Configure database
    • Modules
      • Core
        • Audit
        • Authorization
        • Camunda
        • Case
        • Connector
        • Contract
        • Core
        • Dashboard
        • Document
        • Document generation
        • Exporter
        • Form
        • Form flow
        • Form link (deprecated)
        • Importer
        • Local document generation
        • Local mail
        • Mail
        • Mandrill
        • Milestones
        • Plugins
        • Outbox
          • Outbox RabbitMQ
        • Process document
        • Resource
        • Temporary resource storage
        • Test utils common
        • Value resolvers
        • Valtimo dependencies
        • Web
          • CORS
      • ZGW
        • Besluit
        • Besluiten API
        • Catalogi API
        • Contactmoment
        • Documenten API
        • Haalcentraal BRP
        • Klant
        • Notificaties API
        • Notificaties API Authentication
        • Objecten API
        • Objecten API Authentication
        • Object management
        • Objects API
        • Objecttypen API
        • OpenZaak
        • OpenZaak resource
        • Portaaltaak
        • SmartDocuments
        • Valtimo GZAC dependencies
        • Verzoek
        • Wordpress mail
        • Zaken API
    • Exchange
      • Building blocks
      • Process blueprints
  • Using Valtimo
    • Access control
      • Auto-deployment for access control
      • Configuring permissions
      • Configuring roles
      • Front-end access control
    • Case
      • Creating case settings
      • Case tabs
      • Exporting and importing case definitions
    • Dashboard
      • Auto deploying dashboards
      • Create dashboard
    • Documents
      • Assigning a user to a document
      • Automatic task assignment
      • Creating a document definition
      • Creating case settings
      • Custom case list columns
      • Custom case headers
      • How to link a process to a case
      • How to start a process for a case
      • Search fields
      • Case search
    • Forms
      • Creating FormIO forms in Valtimo
      • Interpolating data in Form.io
      • Configuring an Objecten API object form
    • Form flow
      • Creating a form flow definition
      • Creating a custom form flow component
    • Form links (deprecated)
      • How to refer to external data from a form
      • How to link a form to a task
    • Keycloak
      • Configuring Keycloak
    • Pending Changes mechanism
    • Plugins
      • Catalogi API plugin
      • Configuring plugins
      • SmartDocuments plugin
      • OpenZaak plugin
      • Documenten API plugin
      • Zaken API plugin
      • Object Token Auhentication Plugin
      • Objecten API Plugin
      • Objecttypen API Plugin
      • Portaaltaak Plugin
      • Exact Plugin
      • Verzoek Plugin
      • Besluiten Plugin
    • Process
      • System processes
      • Correlating messages
      • Job service
    • Process links
      • Creating a process link
      • Editing a process link
      • Unlinking a process link
    • Upload
      • Temporary file storage
      • Uploading to Documenten API with metadata
    • Web
      • Configure CORS in Valtimo
  • Extending Valtimo
    • Access control
      • Creating a resource
      • Creating a relation to another resource
    • Dashboard
      • Creating custom data sources
      • Creating custom display types
      • Widget translations
    • Document
      • Assigning and unassigning a user
      • Search fields
    • Forms
      • Creating a form field data resolver
    • Form flow
      • Whitelisting Spring beans for Form flow
    • Making Valtimo multi instance ready
    • Modals (external docs)
    • Creating a custom outbox message publisher
    • Plugins
      • Custom plugin definitions
    • Process
      • Whitelisting Spring beans for Camunda
    • Tabs
      • Customizing case details tabs
      • Customizing case list tabs
      • Setting extra tabs for Zaak object type
    • Integrating spring beans in a process
    • Creating a custom dashboard
    • Creating a custom value resolver
    • Security testing
  • References
    • Modules
      • Authorization
      • Outbox
      • Dashboard
      • Case
      • Core
        • ZonedLocalDateTimeDeserializer
      • Document
      • Form
      • Form flow
      • Form links (deprecated)
      • Object management
      • Value resolvers
    • User interface
      • Design philosophy
      • Carbon design system
      • v-button
      • Breadcrumbs
    • Feature toggles
    • Supported databases
    • Process beans
    • Content Security Policy (CSP)
    • Troubleshoot
  • Release notes
    • Release notes
    • 11.x.x
      • 11.3.3
        • Valtimo backend libraries
      • 11.3.2
        • Valtimo frontend libraries
      • 11.3.1
        • Valtimo frontend libraries
      • 11.3.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 11.2.2
        • Valtimo frontend libraries
      • 11.2.1
        • Valtimo frontend libraries
      • 11.2.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 11.1.6
        • Valtimo frontend libraries
      • 11.1.5
        • Valtimo frontend libraries
      • 11.1.4
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 11.1.1
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 11.1.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 11.0.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
        • Migration
    • 10.x.x
      • 10.8.5
        • Valtimo backend libraries
      • 10.8.4
        • Valtimo frontend libraries
      • 10.8.3
        • Valtimo backend libraries
      • 10.8.2
        • Valtimo frontend libraries
      • 10.8.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 10.7.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 10.6.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
        • Migration
      • 10.5.3
        • Valtimo backend libraries
      • 10.5.2
        • Valtimo backend libraries
      • 10.5.1
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 10.5.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
        • Migration
      • 10.4.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 10.3.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 10.2.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 10.1.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
        • Migration
      • 10.0.1
        • Valtimo frontend libraries
      • 10.0.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
        • Migration
    • 9.x.x
      • 9.26.2/5.15.2
        • Valtimo backend libraries (9.26.2)
        • Valtimo frontend libraries (5.15.2)
        • Migration
      • 9.26.1/5.15.1
        • Valtimo backend libraries (9.26.1)
        • Valtimo frontend libraries (5.15.1)
      • 9.26.0/5.15.0
        • Valtimo backend libraries (9.26.0)
        • Valtimo frontend libraries (5.15.0)
        • Migration
      • 9.25.0/5.14.0
        • Valtimo backend libraries (9.25.0)
        • Valtimo frontend libraries (5.14.0)
      • 9.24.0/5.13.0
        • Valtimo backend libraries (9.24.0)
        • Valtimo frontend libraries (5.13.0)
      • 9.23.0/5.12.0
        • Valtimo backend libraries (9.23.0)
        • Valtimo frontend libraries (5.12.0)
      • 9.22.0/5.11.0
        • Valtimo backend libraries (9.22.0)
        • Valtimo frontend libraries (5.11.0)
        • Migration
      • 9.21.0/5.10.0
        • Valtimo backend libraries (9.21.0)
        • Valtimo frontend libraries (5.10.0)
        • Migration
      • 9.20.0/5.9.1
        • Valtimo backend libraries (9.20.0)
        • Valtimo frontend libraries (5.9.1)
        • Migration
      • 9.19.0/5.8.0
        • Valtimo backend libraries (9.19.0)
        • Valtimo frontend libraries (5.8.0)
        • Migration
      • 9.18.0/5.6.0
        • Valtimo backend libraries (9.18.0)
        • Valtimo frontend libraries (5.6.0)
        • Migration
      • 9.17.0/5.5.0
        • Valtimo backend libraries (9.17.0)
        • Valtimo frontend libraries (5.5.0)
      • 9.16.0/5.4.0
        • Valtimo backend libraries (9.16.0)
        • Valtimo frontend libraries (5.4.0)
Powered by GitBook
On this page
  • Defining your policy
  • Including your policy
  • Extending your policy
  1. References

Content Security Policy (CSP)

PreviousProcess beansNextTroubleshoot

Last updated 1 year ago

Content Security Policy (CSP) is a layer of security to combat Cross-Site Scripting (XSS). For more information on CSP, please refer to .

Valtimo offers strongly typed CSP configuration through its environment files. In order to add this to your implementation, install version 11.2.0 or higher of the front-end libraries.

Defining your policy

It is advised to create a new folder in your implementation: src/environments/csp. In this folder, you will create a file defining a CSP policy for each environment your implementation is deployed to.

For a CSP for our development environment, we might define the following:

src/environments/csp/csp.dev.ts

// types imported from the 'csp-header' package, which is included in Valtimo FE libs 11.2.0 and up
import {CSPHeaderParams, DATA, SELF, UNSAFE_EVAL, UNSAFE_INLINE} from 'csp-header';
// optional import of utilities to manipulate URL strings
import {UrlUtils} from '@valtimo/config';
// the Keycloak configuration used on the development environment
import {authenticationKeycloak} from '../auth/keycloak-config.dev';

// in this object we define our CSP headers, which must conform to the type CSPHeaderParams (imported from 'csp-header')
export const cspHeaderParamsDev: CSPHeaderParams = {
    directives: {
        'default-src': [SELF],
        // DATA is needed because of use of inline images
        'img-src': [SELF, DATA],
        /*
        UNSAFE_EVAL is needed because of javascript in form.io forms (i.e. on summary page)
        Scripts loaded from https://cdn.form.io/ are allowed, otherwise Form.IO won't work in our app.
         */
        'script-src': [SELF, UNSAFE_EVAL, UNSAFE_INLINE, 'https://cdn.form.io/'],
        /* 
        DATA is needed because of use of inline fonts.
        Some external sources are allowed which are used in the Valtimo front-end libraries.
         */
        'font-src': [
            SELF,
            DATA,
            UNSAFE_INLINE,
            'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/',
            'https://fonts.gstatic.com',
        ],
        'connect-src': [
            SELF,
            // connect-src must contain the root url of the keycloak instance the application uses to login
            UrlUtils.getUrlHost(authenticationKeycloak.options.keycloakOptions.config.url),
        ],
        'style-src': [
            SELF,
            // UNSAFE_INLINE is needed because of use of inline styles
            UNSAFE_INLINE,
            // external styles sources used by the Valtimo FE libs
            'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/',
            'https://fonts.googleapis.com',
        ],
    },
};

Including your policy

After defining your policy in a separate file, import it in the environment file in which you want to use it. Next, add it under the key csp. After deploying your application, CSP headers should be added to the document head before app initialization.

src/environments/environment.ts

...
import {cspHeaderParamsDev} from './csp';

export const environment: ValtimoConfig = {
    ...
    csp: cspHeaderParamsDev
}

Extending your policy

The optional property csp in your environment file must refer to an object of type CSPHeaderParams, which is exported by the library csp-header. This library has many features which you can optionally use to add further flexibility to your CSP policy. Please refer to its to see what is possible.

this page
NPM page