Only approve web API permission requests for permissions that FreeTube needs #5022
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Only approve web API permission requests for permissions that FreeTube needs
Pull Request Type
Description
In a web browser when a webpage wants to use an API that could provide access to sensitive information or allows potentially unwanted actions, the web browser prompts the user for permission, Electron however defaults to approving all permission requests. This pull request implements Electron security guideline 5: "Handle session permission requests from remote content" by only approving permissions requests for the two permissions that FreeTube actually uses, other permission requests get rejected. I also decided to reject all permission requests for non-FreeTube URLs, that's a future proofing measure in case we ever show a remote page in an iframe or something.
FreeTube only needs the following permissions:
fullscreen
: So that the video player can enter full screenclipboard-sanitized-write
: To allow the user to copy video URLs and error messagesTesting
Tests to check that functionality that relies on permissions still works
Test to check that unwanted permission requests are rejected
await navigator.mediaDevices.getUserMedia({ audio: true })
(requesting an audio stream from the microphone) in the dev tools, it should throwUncaught DOMException: Permission denied
Desktop