Skip to content
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

[Feature/Security]: Convert inline manifest into separate file to improve CSP default settings #1263

Open
2 tasks done
jceb opened this issue Jan 16, 2024 · 1 comment
Open
2 tasks done
Labels
enhancement New feature or request

Comments

@jceb
Copy link
Contributor

jceb commented Jan 16, 2024

Duplicates

  • I have searched the existing issues

Latest version

  • I have tested the latest version

Summary 💡

The SSR (https://github.com/solidjs/solid-start/blob/main/packages/start/server/StartServer.tsx#L76) and SPA (https://github.com/solidjs/solid-start/blob/main/packages/start/server/spa/StartServer.tsx#L20) version use an inline script to define window.manifest. This makes Content Security Policy more difficult implement and leads to the use of less safe deaults like: script-src 'unsafe-inline'.

Furthermore, Chrome and Firefox don't allow browser extensions to use the CSP setting script-src 'unsafe-inline' (https://developer.chrome.com/docs/extensions/reference/manifest/content-security-policy). Therefore, Solid start can't be used to build browser extensions at the moment.

To work around this issue, the inline script should be converted into an external file that's imported.

Examples 🌈

No response

Motivation 🔦

No response

@jceb jceb added the enhancement New feature or request label Jan 16, 2024
@jceb jceb changed the title [Feature]: Convert inline manifest into separate file to improve CSP default settings [Feature/Security]: Convert inline manifest into separate file to improve CSP default settings Jan 16, 2024
@agmbk
Copy link

agmbk commented Sep 3, 2024

Currently using solid start with SSR, my manifest is 124kb, taking 70% of the size of my initial webpage.
It is sent for any page refresh an user would make.

Separating the manifest as a normal asset, with a cache key, would allow the manifest to be cached by a CDN and by the client, thus making the website faster to load.
The server would also support more requests per second, if it doesn't create and send this huge json every requests.

This is a pretty straightforward and important improvement that should not be overlooked.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants