Skip to content

Force a nonce on all script tags when CSP is enabled

Dominic Couture requested to merge nonce-all-script-tags into master

What does this MR do?

Related to #30720
Related to https://gitlab.com/gitlab-com/gl-security/appsec/appsec-reviews/-/issues/44

Up until now we've been setting the nonce attribute manually on inline scripts. They are rendered when the CSP is enabled and helps prevent XSS, however for external scripts we need to allowlist all the URLs in our CSP. This is tedious and a big barrier to having a CSP enabled by default.

This MR leverages an existing helper we had to set defer attributes everywhere and adds nonce to all script tags regardless of if the script is inline or external.

It also removes all the now-redundant nonce: true used in various places.

The CSP itself isn't modified, that's coming in a future MR.

Screenshots (strongly suggested)

image

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team
Edited by Dominic Couture

Merge request reports