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

WASM headers for online #3258

Closed
juliusknorr opened this issue Oct 26, 2023 · 13 comments
Closed

WASM headers for online #3258

juliusknorr opened this issue Oct 26, 2023 · 13 comments
Labels
enhancement New feature or request

Comments

@juliusknorr
Copy link
Member

As asked for by @mmeeks we would need to have wasm-unsafe-eval CSP headers set for WASM experiments currently taking place.

I checked back and we have a partly mechanism available to set those by nextcloud/server#38082 this is however not used yet by Nextcloud Talk, as there the wasm is running in a service worker which doesn't require this.

We should be able to add those headers of course, just some additional questions:

@mmeeks To you have a need to run the online wasm in the main thread? As far as I understood this could have a significant impact on browser responsiveness.

@juliusknorr juliusknorr added the enhancement New feature or request label Oct 26, 2023
@mmeeks
Copy link
Contributor

mmeeks commented Oct 26, 2023

Nope - we should run our WASM off the main thread, and do load, rendering etc. in the background; while continuing to render the UI in the main-thread with the same front-end code as now.

@juliusknorr
Copy link
Member Author

In that case the header should not be needed as far as @danxuliu told me

@mmeeks
Copy link
Contributor

mmeeks commented Oct 26, 2023

Hmm - ok ? it seems that we need the parent frame of our iframe to have this @Ashod can you provide more details; quite possibly I've mistaken what's up here I think. Quite possibly our startup WASM runs in the main thread initially (not sure).

@Ashod
Copy link
Collaborator

Ashod commented Oct 26, 2023

I believe we need these two headers when serving the parent:

Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp

Also had to add script-src unsafe-eval to the CSP header of our frame/js/wasm serving, but we will find out if that is required when we load with the above headers as the missing unsafe-eval was mentioned in the error message.

@juliusknorr
Copy link
Member Author

unsafe-eval would be quite an impactful change security wise.

For the others I pushed a quick PR to #3260 which should achieve setting those headers for Nextcloud. However we should of course get more clarify about which headers to add in the end, why and its implications.

@mmeeks
Copy link
Contributor

mmeeks commented Oct 26, 2023

unsafe-eval sounds bad; but I think we can do that with wasm-eval in future :-) thanks Julius.

@Ashod
Copy link
Collaborator

Ashod commented Nov 16, 2023

For the others I pushed a quick PR to #3260 which should achieve setting those headers for Nextcloud. However we should of course get more clarify about which headers to add in the end, why and its implications.

@juliushaertl, I'd like to run some tests locally. Any chance to get the draft PR polished so I can build locally and test?
Thank in advance!

@juliusknorr
Copy link
Member Author

@Ashod Pushed and should be testable with that now.

Reference for what it currently set currently set:
Screenshot 2023-11-16 at 09 15 20

@Ashod
Copy link
Collaborator

Ashod commented Nov 20, 2023

Thanks @juliushaertl. The PR branch being out-of-date shouldn't be an issue?

@caolanm, does #3260 work for you? Are you able to apply it and build?

@caolanm
Copy link
Contributor

caolanm commented Nov 20, 2023

I have this patched richdocuments and a local nextcloud install. I can see it has an effect, but right now if I open a document, without wasm, then I just get an error of:

[getWopiUrl] http://localhost/nextcloud/index.php/apps/richdocuments/wopi/files/7_oca1b28l9m0b url.js:42:9
The resource at “http://localhost:9980/browser/70f697e3da/cool.html?WOPISrc=http%3A%2F%2Flocalhost%2Fnextcloud%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F7_oca1b28l9m0b&title=%2FDocuments%2FWelcome%20to%20Nextcloud%20Hub.docx&lang=en&closebutton=1&revisionhistory=1” was blocked due to its Cross-Origin-Resource-Policy header (or lack thereof). See https://developer.mozilla.org/docs/Web/HTTP/Cross-Origin_Resource_Policy_(CORP)# files

@juliusknorr
Copy link
Member Author

Seems this was caused by those two headers: #3258 (comment)

I pushed a fix up to the PR.

@droogi
Copy link

droogi commented Oct 5, 2024

It seems that these two headers block maps and memories to load tiles and thumbnails/pictures

Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp

@MichaIng
Copy link
Member

MichaIng commented Oct 7, 2024

Yeah, isn't it possible to achieve everything via CSP for the very individual pages of the Nextcloud Office app that require it, instead of globally for all Nextcloud?

While it breaks other apps, the only workaround seems to be to set Cross-Origin-Embedder-Policy: credentialless, which seems to imply things we do not want: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Embedder-Policy#credentialless
Also credentialless as well as Cross-Origin-Opener-Policy in general seem to not be supported by all browsers:

Hmm, only CSP option seems to be wasm-unsafe-eval: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#unsafe_webassembly_execution

@droogi could you open a new issue here about this? Actually not good to discuss in a closed one.

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

6 participants