discovery-media-player 0.1.16 → 0.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/serve.js +0 -0
- package/package.json +2 -1
- package/server/handler.js +33 -0
package/bin/serve.js
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "discovery-media-player",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.17",
|
|
4
4
|
"description": "Self-hosted document viewer: per-recipient tracked links, reading analytics, live presentation. The core knows nothing about the application hosting it — everything it borrows arrives through an injected context.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pdf-viewer",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"./package.json": "./package.json"
|
|
54
54
|
},
|
|
55
55
|
"scripts": {
|
|
56
|
+
"prepare": "node tools/install-hooks.mjs",
|
|
56
57
|
"start": "node bin/serve.js",
|
|
57
58
|
"build": "node build/bundle.mjs && tsc -p tsconfig.build.json && node -e \"import('./build/bundle.mjs').then(m=>m.marquerDistEsm())\"",
|
|
58
59
|
"test": "vitest run",
|
package/server/handler.js
CHANGED
|
@@ -1199,6 +1199,17 @@ function sendHtml(res, status, html, scriptSrc, imgExtra, frameAncestors) {
|
|
|
1199
1199
|
`media-src 'self'${supaOrigin ? " " + supaOrigin : ""}`,
|
|
1200
1200
|
"style-src 'unsafe-inline'",
|
|
1201
1201
|
"base-uri 'none'",
|
|
1202
|
+
// ⚠️ `form-action` NE RETOMBE PAS SUR `default-src`. C'est l'une des rares directives à ne pas
|
|
1203
|
+
// hériter : une page en `default-src 'none'` peut malgré tout poster un formulaire n'importe
|
|
1204
|
+
// où. Aucune de nos pages ne contient de `<form>` — les envois passent par `fetch`, donc par
|
|
1205
|
+
// `connect-src` — mais un script injecté pourrait en fabriquer un pour exfiltrer vers un
|
|
1206
|
+
// domaine tiers, et rien ne l'en empêchait.
|
|
1207
|
+
//
|
|
1208
|
+
// `'self'` plutôt que `'none'` : le mur d'accès et la connexion visiteur peuvent avoir besoin
|
|
1209
|
+
// d'un envoi de même origine, et casser une authentification pour fermer une porte que
|
|
1210
|
+
// personne n'a franchie serait un mauvais échange. `'self'` ferme l'exfiltration, qui est le
|
|
1211
|
+
// risque réel.
|
|
1212
|
+
"form-action 'self'",
|
|
1202
1213
|
// Aperçu interne : framing MÊME ORIGINE autorisé (iframe DocViewer). Page publique : 'none' (anti-clickjacking).
|
|
1203
1214
|
`frame-ancestors ${frameAncestors || "'none'"}`,
|
|
1204
1215
|
].join("; "));
|
|
@@ -1220,6 +1231,17 @@ function sendSoftWallHtml(res, html, nonce, imgExtra, frameAncestors) {
|
|
|
1220
1231
|
`img-src 'self' data: blob:${imgExtra ? " " + imgExtra : ""}`,
|
|
1221
1232
|
"style-src 'unsafe-inline' https://accounts.google.com/gsi/style",
|
|
1222
1233
|
"base-uri 'none'",
|
|
1234
|
+
// ⚠️ `form-action` NE RETOMBE PAS SUR `default-src`. C'est l'une des rares directives à ne pas
|
|
1235
|
+
// hériter : une page en `default-src 'none'` peut malgré tout poster un formulaire n'importe
|
|
1236
|
+
// où. Aucune de nos pages ne contient de `<form>` — les envois passent par `fetch`, donc par
|
|
1237
|
+
// `connect-src` — mais un script injecté pourrait en fabriquer un pour exfiltrer vers un
|
|
1238
|
+
// domaine tiers, et rien ne l'en empêchait.
|
|
1239
|
+
//
|
|
1240
|
+
// `'self'` plutôt que `'none'` : le mur d'accès et la connexion visiteur peuvent avoir besoin
|
|
1241
|
+
// d'un envoi de même origine, et casser une authentification pour fermer une porte que
|
|
1242
|
+
// personne n'a franchie serait un mauvais échange. `'self'` ferme l'exfiltration, qui est le
|
|
1243
|
+
// risque réel.
|
|
1244
|
+
"form-action 'self'",
|
|
1223
1245
|
`frame-ancestors ${frameAncestors || "'self'"}`,
|
|
1224
1246
|
].join("; "));
|
|
1225
1247
|
res.end(html);
|
|
@@ -1963,6 +1985,17 @@ function sendPresentHtml(res, html, nonce, supaUrl, imgExtra, frameAncestors) {
|
|
|
1963
1985
|
"style-src 'unsafe-inline' https://unpkg.com https://fonts.googleapis.com",
|
|
1964
1986
|
"font-src https://fonts.gstatic.com data:",
|
|
1965
1987
|
"base-uri 'none'",
|
|
1988
|
+
// ⚠️ `form-action` NE RETOMBE PAS SUR `default-src`. C'est l'une des rares directives à ne pas
|
|
1989
|
+
// hériter : une page en `default-src 'none'` peut malgré tout poster un formulaire n'importe
|
|
1990
|
+
// où. Aucune de nos pages ne contient de `<form>` — les envois passent par `fetch`, donc par
|
|
1991
|
+
// `connect-src` — mais un script injecté pourrait en fabriquer un pour exfiltrer vers un
|
|
1992
|
+
// domaine tiers, et rien ne l'en empêchait.
|
|
1993
|
+
//
|
|
1994
|
+
// `'self'` plutôt que `'none'` : le mur d'accès et la connexion visiteur peuvent avoir besoin
|
|
1995
|
+
// d'un envoi de même origine, et casser une authentification pour fermer une porte que
|
|
1996
|
+
// personne n'a franchie serait un mauvais échange. `'self'` ferme l'exfiltration, qui est le
|
|
1997
|
+
// risque réel.
|
|
1998
|
+
"form-action 'self'",
|
|
1966
1999
|
`frame-ancestors ${frameAncestors || "'none'"}`,
|
|
1967
2000
|
].join("; "));
|
|
1968
2001
|
res.end(html);
|