mirror of
https://github.com/BookStackApp/BookStack.git
synced 2026-02-05 08:39:55 +03:00
[Support Request]: Adding trusted scripts locations to Content Security Policy (CSP) #2498
Closed
opened 2026-02-05 04:20:36 +03:00 by OVERLORD
·
9 comments
No Branch/Tag Specified
development
l10n_development
further_theme_development
release
llm_only
vectors
v25-11
docker_env
drawio_rendering
user_permissions
ldap_host_failover
svg_image
prosemirror
captcha_example
fix/video-export
v25.12.3
v25.12.2
v25.12.1
v25.12
v25.11.6
v25.11.5
v25.11.4
v24.11.4
v25.11.3
v25.11.2
v25.11.1
v25.11
v25.07.3
v25.07.2
v25.07.1
v25.07
v25.05.2
v25.05.1
v25.05
v25.02.5
v25.02.4
v25.02.3
v25.02.2
v25.02.1
v25.02
v24.12.1
v24.12
v24.10.3
v24.10.2
v24.10.1
v24.10
v24.05.4
v24.05.3
v24.05.2
v24.05.1
v24.05
v24.02.3
v24.02.2
v24.02.1
v24.02
v23.12.3
v23.12.2
v23.12.1
v23.12
v23.10.4
v23.10.3
v23.10.2
v23.10.1
v23.10
v23.08.3
v23.08.2
v23.08.1
v23.08
v23.06.2
v23.06.1
v23.06
v23.05.2
v23.05.1
v23.05
v23.02.3
v23.02.2
v23.02.1
v23.02
v23.01.1
v23.01
v22.11.1
v22.11
v22.10.2
v22.10.1
v22.10
v22.09.1
v22.09
v22.07.3
v22.07.2
v22.07.1
v22.07
v22.06.2
v22.06.1
v22.06
v22.04.2
v22.04.1
v22.04
v22.03.1
v22.03
v22.02.3
v22.02.2
v22.02.1
v22.02
v21.12.5
v21.12.4
v21.12.3
v21.12.2
v21.12.1
v21.12
v21.11.3
v21.11.2
v21.11.1
v21.11
v21.10.3
v21.10.2
v21.10.1
v21.10
v21.08.6
v21.08.5
v21.08.4
v21.08.3
v21.08.2
v21.08.1
v21.08
v21.05.4
v21.05.3
v21.05.2
v21.05.1
v21.05
v21.04.6
v21.04.5
v21.04.4
v21.04.3
v21.04.2
v21.04.1
v21.04
v0.31.8
v0.31.7
v0.31.6
v0.31.5
v0.31.4
v0.31.3
v0.31.2
v0.31.1
v0.31.0
v0.30.7
v0.30.6
v0.30.5
v0.30.4
v0.30.3
v0.30.2
v0.30.1
v0.30.0
v0.29.3
v0.29.2
v0.29.1
v0.29.0
v0.28.3
v0.28.2
v0.28.1
v0.28.0
v0.27.5
v0.27.4
v0.27.3
v0.27.2
v0.27.1
v0.27
v0.26.4
v0.26.3
v0.26.2
v0.26.1
v0.26.0
v0.25.5
v0.25.4
v0.25.3
v0.25.2
v0.25.1
v0.25.0
v0.24.3
v0.24.2
v0.24.1
v0.24.0
v0.23.2
v0.23.1
v0.23.0
v0.22.0
v0.21.0
v0.20.3
v0.20.2
v0.20.1
v0.20.0
v0.19.0
v0.18.5
v0.18.4
v0.18.3
v0.18.2
v0.18.1
v0.18.0
v0.17.4
v0.17.3
v0.17.2
v0.17.1
v0.17.0
v0.16.3
v0.16.2
v0.16.1
v0.16.0
v0.15.3
v0.15.2
v0.15.1
v0.15.0
v0.14.3
v0.14.2
v0.14.1
v0.14.0
v0.13.1
v0.13.0
v0.12.2
v0.12.1
v0.12.0
v0.11.2
v0.11.1
v0.11.0
v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.2
v0.8.1
v0.8.0
v0.7.6
v0.7.5
v0.7.4
v0.7.3
0.7.2
v.0.7.1
v0.7.0
v0.6.3
v0.6.2
v0.6.1
v0.6.0
v0.5.0
Labels
Clear labels
🎨 Design
📖 Docs Update
🐛 Bug
🐛 Bug
:cat2:🐈 Possible duplicate
💿 Database
☕ Open to discussion
💻 Front-End
🐕 Support
🚪 Authentication
🌍 Translations
🔌 API Task
🏭 Back-End
⛲ Upstream
🔨 Feature Request
🛠️ Enhancement
🛠️ Enhancement
🛠️ Enhancement
❤️ Happy feedback
🔒 Security
🔍 Pending Validation
💆 UX
📝 WYSIWYG Editor
🌔 Out of scope
🔩 API Request
:octocat: Admin/Meta
🖌️ View Customization
❓ Question
🚀 Priority
🛡️ Blocked
🚚 Export System
♿ A11y
🔧 Maintenance
> Markdown Editor
No Label
🐕 Support
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/BookStack#2498
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @rene0899 on GitHub (Nov 20, 2021).
Attempted Debugging
Searched GitHub Issues
Describe the Scenario
I use BookStack with CloudFlare Rocket Loader and email address obfuscation. For that, Cloudflare needs to run scripts on my site. BookStack default CSP doesn't allow this because of "script-src http: https: 'nonce-abc123' 'strict-dynamic'" policy. I can disable this by adding "ALLOW_CONTENT_SCRIPTS=true" line to my .env file. However, by disabling this I make my site less secure by allowing everything. How can I explicitly allow CloudFlare scripts to be run without compromising on security?
I tried overwriting CSP headers with my Ngnix webserver. I added following line to my nginx site configuration file between Server {} (Basically everything stated in BookStack documentation which it needs + cloudflare URL) -
but that didn't work and instead threw a lot more errors to console about scripts restricted by given policy. And even if it did work, then as I understand it, browser would prefer BookStack set CSP because it would be more strict.
Exact BookStack Version
v21.11
Log Content
No response
PHP Version
No response
Hosting Environment
Azure
@ssddanbrown commented on GitHub (Nov 20, 2021):
Hi @rene0899, Yeah, The trouble is that Cloudflare adds these scripts to the page in a way that the CSP rules would actively defend against. We can't alter these scripts either to make them compatible due to where Cloudlfare sits in the stack.
I don't think adding the cloudflare domains would ultimately help here since we make use of the 'strict-dynamic' option for sources.
Any scripts added in via the "Custom HTML Head" content setting automatically have nonces applied to work with our CSP system. I guess you could potentially copy the cloudlfare-injected content to this option? Not sure how often they change the script references though. It's a massive shame they don't seem to support user control of these scripts.
@ssddanbrown commented on GitHub (Dec 17, 2021):
Since there's been no further discussion on this I'm going to close it off.
Based upon Cloudflare's documentation they are doing CSP nonce handling for their "Bot Management" element. It would be ideal if they done this for other scripts they inject. It would help that any Cloudflare customers with this issue raise this via Cloudlfare support since I don't have an account with them to make the case.
@10935336 commented on GitHub (May 29, 2022):
I had a similar problem.
I'm trying to integrate reCAPTCHA v2 into a website, but the CSP won't let me do.
recaptcha.net is an official proxy provided by Google:https://developers.google.com/recaptcha/docs/faq#can-i-use-recaptcha-globally
https://developers.google.com/recaptcha/docs/faq#im-using-content-security-policy-csp-on-my-website.-how-can-i-configure-it-to-work-with-recaptcha
@ssddanbrown commented on GitHub (May 29, 2022):
@10935336 This can really depend on how you're attempting to load in scripts.
You'll need to ensure any initial script tags are added with a CSP nonce as we do here:
49498cfaf9/resources/views/layouts/base.blade.php (L53)A CSP nonce is automatically applied to "Custom HTML Head Content" scripts.
@10935336 commented on GitHub (May 30, 2022):
Thanks for the help!
For anyone who might see this: you need to add your request sources in
ALLOWED_IFRAME_SOURCES =in .env and then just do<script src="URL" nonce="{{ $cspNonce }}"></script>@ssddanbrown commented on GitHub (May 30, 2022):
Happy to help!
Note, the
ALLOWED_IFRAME_SOURCESbit is only needed when scripts require loading iframes, it's not needed for all custom scripts.@DraKuLa21-a42 commented on GitHub (Sep 14, 2024):
@10935336
Could you please explain in more detail exactly what needs to be done to resolve this issue?
@10935336 commented on GitHub (Sep 18, 2024):
You just need to add nocen in the script
from something like this
<script src="https://exampl.com/foo.js"></script>to
<script src="https://exampl.com/foo.js" nonce="{{ $cspNonce }}"></script>@joshhcd commented on GitHub (May 21, 2025):
Thank you very much. This was needed, as I added Matomo tracking and was wracking my brain on why it wasn't working.