patcg-individual-drafts / topics

The Topics API
https://patcg-individual-drafts.github.io/topics/
Other
598 stars 189 forks source link

Possibility to execute document.browsingTopics() for a script HTML tag #239

Open AurelienMozoo opened 1 year ago

AurelienMozoo commented 1 year ago

It is not possible to get topic API datas using document.browsingTopics() without using a non-friendly iframe context. It means a Javascript file https://example.com/getTopicAPIDatas.js even if the URL where the file is hosted was whitelisted after an enrollment, won't be able to execute document.browsingTopics(). Adding a non-friendly iframe that would target "https://example.com/getTopicAPIDatas.js" could have impacts on loading time of the web page or current script executions and therefore won't be the best solution.

Would it be possible to whitelist host/files that would allow javascript tags integrated directly on web pages to get topic API datas ?

Example: Considering a website "website.com" writing a javascript tag (<script src="https://example.com/getTopicAPIDatas.js">) and https://example.com is whitelisted/enrolled, https://example.com/getTopicAPIDatas.js would be able to execute document.browsingTopics().

jkarlin commented 1 year ago

Thanks for the feedback. From a security perspective, this isn't possible. Each document and its execution environment are associated with a single origin, that of the document. Third-party subresources loaded and executed within that same environment are considered to be owned by the origin of the document. This is to prevent unconsented data leakage from one origin to another.

patmmccann commented 1 year ago

could have impacts on loading time of the web page or current script executions and therefore won't be the best solution.

We've found it is fine, just delay the insertion until the main thread isn't busy.

jkarlin commented 1 year ago

An alternative is to provide a browsingTopics attribute on Githubissues.

  • Githubissues is a development platform for aggregating issues.