-
-
Notifications
You must be signed in to change notification settings - Fork 2.9k
feat(csp): resources for script and styles directives #13812
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good. It might be nice to adopt the same approach for typing and validating directives as a string in the config, rather than using the type/content object.
|
|
||
| let scriptResources = "'self'"; | ||
| if (result.scriptResources.length > 0) { | ||
| scriptResources = result.scriptResources.map((r) => `'${r}'`).join(' '); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are there scenarios where this could need escaping?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not that I'm aware of. URLs don't have apostrophes, and the other resources are well-known
f12f4be to
606fc05
Compare
I will! I'll try to implement it in the next PR. Thank you! |
Co-authored-by: ascorbic <[email protected]>
* chore: build hashes of scripts (#13590) * chore: build hashes of scripts * chore: fix changes * chore: fix changes * chore: fix changes * feat(csp): create hashes of tracked scripts and hashes (#13675) Co-authored-by: florian-lefebvre <[email protected]> * feat(csp): fix CSP header, inject astro island script/style (#13687) * feat(csp): track client scripts and CSS (#13725) Co-authored-by: ascorbic <[email protected]> * feat(csp): support view transitions (#13738) Co-authored-by: florian-lefebvre <[email protected]> Co-authored-by: ascorbic <[email protected]> fix CSP header, inject astro island script/style (#13687) * feat(csp): server islands (#13775) Co-authored-by: florian-lefebvre <[email protected]> * feat(csp): customise algorithm (#13803) Co-authored-by: Florian Lefebvre <[email protected]> * chore: build hashes of scripts (#13590) (#13805) Co-authored-by: Florian Lefebvre <[email protected]> * feat(csp): allow additional directives (#13810) Co-authored-by: ascorbic <[email protected]> Co-authored-by: florian-lefebvre <[email protected]> * feat(csp): resources for script and styles directives (#13812) Co-authored-by: ascorbic <[email protected]> * feat(csp): runtime APIs (#13824) Co-authored-by: Matt Kane <[email protected]> * feat(csp): add script-dynamic keyword support (#13834) * update lockfile * chore: docs and changeset (#13870) * chore: add changeset * grammar * Apply suggestions from code review Co-authored-by: Sarah Rainsberger <[email protected]> * Update JSDoc with examples to match docs * Sarah's changeset edits * Apply suggestions from code review Thanks, @ArmandPhilippot Co-authored-by: Armand Philippot <[email protected]> * Fix indentation * Update .changeset/crazy-doors-buy.md * Apply suggestions from code review Co-authored-by: Sarah Rainsberger <[email protected]> --------- Co-authored-by: Sarah Rainsberger <[email protected]> Co-authored-by: Matt Kane <[email protected]> Co-authored-by: Armand Philippot <[email protected]> * Update lockfile * dedupe deps * Lock * Lock * fix: server islands in mdx --------- Co-authored-by: florian-lefebvre <[email protected]> Co-authored-by: ascorbic <[email protected]> Co-authored-by: Florian Lefebvre <[email protected]> Co-authored-by: Matt Kane <[email protected]> Co-authored-by: Sarah Rainsberger <[email protected]> Co-authored-by: Armand Philippot <[email protected]>
* chore: build hashes of scripts (withastro#13590) * chore: build hashes of scripts * chore: fix changes * chore: fix changes * chore: fix changes * feat(csp): create hashes of tracked scripts and hashes (withastro#13675) Co-authored-by: florian-lefebvre <[email protected]> * feat(csp): fix CSP header, inject astro island script/style (withastro#13687) * feat(csp): track client scripts and CSS (withastro#13725) Co-authored-by: ascorbic <[email protected]> * feat(csp): support view transitions (withastro#13738) Co-authored-by: florian-lefebvre <[email protected]> Co-authored-by: ascorbic <[email protected]> fix CSP header, inject astro island script/style (withastro#13687) * feat(csp): server islands (withastro#13775) Co-authored-by: florian-lefebvre <[email protected]> * feat(csp): customise algorithm (withastro#13803) Co-authored-by: Florian Lefebvre <[email protected]> * chore: build hashes of scripts (withastro#13590) (withastro#13805) Co-authored-by: Florian Lefebvre <[email protected]> * feat(csp): allow additional directives (withastro#13810) Co-authored-by: ascorbic <[email protected]> Co-authored-by: florian-lefebvre <[email protected]> * feat(csp): resources for script and styles directives (withastro#13812) Co-authored-by: ascorbic <[email protected]> * feat(csp): runtime APIs (withastro#13824) Co-authored-by: Matt Kane <[email protected]> * feat(csp): add script-dynamic keyword support (withastro#13834) * update lockfile * chore: docs and changeset (withastro#13870) * chore: add changeset * grammar * Apply suggestions from code review Co-authored-by: Sarah Rainsberger <[email protected]> * Update JSDoc with examples to match docs * Sarah's changeset edits * Apply suggestions from code review Thanks, @ArmandPhilippot Co-authored-by: Armand Philippot <[email protected]> * Fix indentation * Update .changeset/crazy-doors-buy.md * Apply suggestions from code review Co-authored-by: Sarah Rainsberger <[email protected]> --------- Co-authored-by: Sarah Rainsberger <[email protected]> Co-authored-by: Matt Kane <[email protected]> Co-authored-by: Armand Philippot <[email protected]> * Update lockfile * dedupe deps * Lock * Lock * fix: server islands in mdx --------- Co-authored-by: florian-lefebvre <[email protected]> Co-authored-by: ascorbic <[email protected]> Co-authored-by: Florian Lefebvre <[email protected]> Co-authored-by: Matt Kane <[email protected]> Co-authored-by: Sarah Rainsberger <[email protected]> Co-authored-by: Armand Philippot <[email protected]>
Changes
This PR implements the following chapter of the RFC: https://github.com/withastro/roadmap/blob/feat/rfc-csp/proposals/0055-csp.md#customize-the-script-src-and-style-src-directives
Changes:
z.custom, which provides runtime validation and a better type checkstyleHashesandstyleResources, we now havestyleDirective.hashandstyleDirective.resourcesTesting
I updated the validation test, since now we don't raise a custom message anymore.
Added new integration tests and updated the current ones.
Docs