fix(csp): allow Dodo Payments SDK script origin in script-src#2631
fix(csp): allow Dodo Payments SDK script origin in script-src#2631
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
Greptile SummaryThis PR fixes a Content Security Policy violation by adding
Confidence Score: 4/5Safe to merge — minimal, targeted CSP change addressing a confirmed Sentry violation with no functional regressions expected. Both No files require special attention — both changed files are configuration only. Important Files Changed
Sequence DiagramsequenceDiagram
participant Browser
participant CSP
participant DodoSDK as sdk.custom.hs.dodopayments.com
participant CheckoutFrame as checkout.dodopayments.com
Browser->>CSP: Load script from sdk.custom.hs.dodopayments.com
Note over CSP: script-src now includes this origin ✅
CSP->>DodoSDK: Request allowed
DodoSDK-->>Browser: dodopayments-checkout SDK bundle
Browser->>CSP: Open checkout iframe (checkout.dodopayments.com)
Note over CSP: frame-src already covers this origin ✅
CSP->>CheckoutFrame: Frame allowed
CheckoutFrame-->>Browser: Checkout overlay rendered
Reviews (1): Last reviewed commit: "fix(csp): allow Dodo Payments SDK script..." | Re-trigger Greptile |
| { "key": "Referrer-Policy", "value": "strict-origin-when-cross-origin" }, | ||
| { "key": "Permissions-Policy", "value": "camera=(), microphone=(), geolocation=(self), accelerometer=(), autoplay=(self \"https://www.youtube.com\" \"https://www.youtube-nocookie.com\"), bluetooth=(), display-capture=(), encrypted-media=(self \"https://www.youtube.com\" \"https://www.youtube-nocookie.com\"), gyroscope=(), hid=(), idle-detection=(), magnetometer=(), midi=(), payment=(), picture-in-picture=(self \"https://www.youtube.com\" \"https://www.youtube-nocookie.com\"), screen-wake-lock=(), serial=(), usb=(), xr-spatial-tracking=()" }, | ||
| { "key": "Content-Security-Policy", "value": "default-src 'self'; connect-src 'self' https: wss: blob: data: https://*.ingest.sentry.io https://*.ingest.us.sentry.io; img-src 'self' data: blob: https:; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; script-src 'self' 'sha256-LnMFPWZxTgVOr2VYwIh9mhQ3l/l3+a3SfNOLERnuHfY=' 'sha256-4Z2xtr1B9QQugoojE/nbpOViG+8l2B7CZVlKgC78AeQ=' 'sha256-903UI9my1I7mqHoiVeZSc56yd50YoRJTB2269QqL76w=' 'sha256-EytE6o1N8rwzpVFMrF+WvBZr2y5UhFLw79o1/4VqS0s=' 'wasm-unsafe-eval' https://www.youtube.com https://static.cloudflareinsights.com https://vercel.live https://challenges.cloudflare.com https://*.clerk.accounts.dev https://abacus.worldmonitor.app; worker-src 'self' blob:; font-src 'self' data: https:; media-src 'self' data: blob: https:; frame-src 'self' https://worldmonitor.app https://tech.worldmonitor.app https://finance.worldmonitor.app https://commodity.worldmonitor.app https://happy.worldmonitor.app https://www.youtube.com https://www.youtube-nocookie.com https://www.google.com https://webcams.windy.com https://challenges.cloudflare.com https://*.clerk.accounts.dev https://vercel.live https://*.vercel.app https://checkout.dodopayments.com https://test.checkout.dodopayments.com; frame-ancestors 'self' https://www.worldmonitor.app https://tech.worldmonitor.app https://finance.worldmonitor.app https://commodity.worldmonitor.app https://happy.worldmonitor.app https://worldmonitor.app https://vercel.live https://*.vercel.app; base-uri 'self'; object-src 'none'; form-action 'self' https://api.worldmonitor.app" } | ||
| { "key": "Content-Security-Policy", "value": "default-src 'self'; connect-src 'self' https: wss: blob: data: https://*.ingest.sentry.io https://*.ingest.us.sentry.io; img-src 'self' data: blob: https:; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; script-src 'self' 'sha256-LnMFPWZxTgVOr2VYwIh9mhQ3l/l3+a3SfNOLERnuHfY=' 'sha256-4Z2xtr1B9QQugoojE/nbpOViG+8l2B7CZVlKgC78AeQ=' 'sha256-903UI9my1I7mqHoiVeZSc56yd50YoRJTB2269QqL76w=' 'sha256-EytE6o1N8rwzpVFMrF+WvBZr2y5UhFLw79o1/4VqS0s=' 'wasm-unsafe-eval' https://www.youtube.com https://static.cloudflareinsights.com https://vercel.live https://challenges.cloudflare.com https://*.clerk.accounts.dev https://abacus.worldmonitor.app https://sdk.custom.hs.dodopayments.com; worker-src 'self' blob:; font-src 'self' data: https:; media-src 'self' data: blob: https:; frame-src 'self' https://worldmonitor.app https://tech.worldmonitor.app https://finance.worldmonitor.app https://commodity.worldmonitor.app https://happy.worldmonitor.app https://www.youtube.com https://www.youtube-nocookie.com https://www.google.com https://webcams.windy.com https://challenges.cloudflare.com https://*.clerk.accounts.dev https://vercel.live https://*.vercel.app https://checkout.dodopayments.com https://test.checkout.dodopayments.com; frame-ancestors 'self' https://www.worldmonitor.app https://tech.worldmonitor.app https://finance.worldmonitor.app https://commodity.worldmonitor.app https://happy.worldmonitor.app https://worldmonitor.app https://vercel.live https://*.vercel.app; base-uri 'self'; object-src 'none'; form-action 'self' https://api.worldmonitor.app" } |
There was a problem hiding this comment.
SDK may need
style-src allowance too
The dodopayments-checkout overlay SDK injects a full checkout UI. If it loads any external stylesheets from sdk.custom.hs.dodopayments.com (rather than inlining all styles), those would be blocked by the current style-src 'self' 'unsafe-inline' https://fonts.googleapis.com directive.
The Sentry report only captured the script-src violation, but it's worth keeping an eye on the browser console (or Sentry) after deploying — if the overlay renders without styling or triggers a new CSP report, https://sdk.custom.hs.dodopayments.com may need to be added to style-src as well (and mirrored in index.html).
No action required now, but worth verifying once deployed.
Fixes CSP violation reported in Sentry (issue 7368303076).
The Dodo Payments checkout overlay SDK (
dodopayments-checkoutpackage) loads its script fromhttps://sdk.custom.hs.dodopayments.com/which was blocked by ourscript-srcdirective.Changes:
vercel.json(production): addhttps://sdk.custom.hs.dodopayments.comtoscript-srcindex.html(dev/Tauri): sameThe checkout
frame-srcalready hadcheckout.dodopayments.comandtest.checkout.dodopayments.comfrom PR #2024.Sentry issue marked resolved (inNextRelease).