@braidlabs/core 0.5.0 → 0.7.0
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/package.json +1 -1
- package/src/adapters/adapter.d.ts +11 -0
- package/src/adapters/adapter.js.map +1 -1
- package/src/adapters/compat-adapter.js +2 -2
- package/src/adapters/compat-adapter.js.map +1 -1
- package/src/compat/born-inert-scripts.d.ts +2 -0
- package/src/compat/born-inert-scripts.js +39 -0
- package/src/compat/born-inert-scripts.js.map +1 -1
- package/src/compat/cookie-partition.d.ts +25 -0
- package/src/compat/cookie-partition.js +79 -0
- package/src/compat/cookie-partition.js.map +1 -0
- package/src/compat/document-member-classification.js +3 -2
- package/src/compat/document-member-classification.js.map +1 -1
- package/src/compat/document-overrides.d.ts +6 -6
- package/src/compat/document-overrides.js +23 -0
- package/src/compat/document-overrides.js.map +1 -1
- package/src/compat/fragment-boundary.d.ts +5 -0
- package/src/compat/fragment-boundary.js +159 -12
- package/src/compat/fragment-boundary.js.map +1 -1
- package/src/compat/html-policy.d.ts +50 -0
- package/src/compat/html-policy.js +155 -0
- package/src/compat/html-policy.js.map +1 -0
- package/src/compat/realm-patches.d.ts +2 -1
- package/src/compat/realm-patches.js +117 -3
- package/src/compat/realm-patches.js.map +1 -1
- package/src/compat/script-execution.d.ts +24 -0
- package/src/compat/script-execution.js +177 -10
- package/src/compat/script-execution.js.map +1 -1
- package/src/compat/storage-partition.d.ts +47 -0
- package/src/compat/storage-partition.js +291 -0
- package/src/compat/storage-partition.js.map +1 -0
- package/src/compat/subresource-urls.d.ts +41 -0
- package/src/compat/subresource-urls.js +133 -0
- package/src/compat/subresource-urls.js.map +1 -0
- package/src/config.d.ts +28 -0
- package/src/config.js +24 -0
- package/src/config.js.map +1 -1
- package/src/elements/boot-gate.d.ts +47 -0
- package/src/elements/boot-gate.js +207 -0
- package/src/elements/boot-gate.js.map +1 -0
- package/src/elements/fragment-slot.d.ts +34 -0
- package/src/elements/fragment-slot.js +282 -24
- package/src/elements/fragment-slot.js.map +1 -1
- package/src/elements/late-content.d.ts +44 -0
- package/src/elements/late-content.js +107 -0
- package/src/elements/late-content.js.map +1 -0
- package/src/elements/prefetch.d.ts +27 -0
- package/src/elements/prefetch.js +100 -0
- package/src/elements/prefetch.js.map +1 -0
- package/src/elements/prerequisites.d.ts +42 -0
- package/src/elements/prerequisites.js +133 -0
- package/src/elements/prerequisites.js.map +1 -0
- package/src/elements/recovery.d.ts +46 -0
- package/src/elements/recovery.js +59 -0
- package/src/elements/recovery.js.map +1 -0
- package/src/errors.d.ts +4 -1
- package/src/errors.js +2 -0
- package/src/errors.js.map +1 -1
- package/src/index.d.ts +4 -1
- package/src/index.js +10 -1
- package/src/index.js.map +1 -1
- package/src/realm/realm-manager.js +23 -0
- package/src/realm/realm-manager.js.map +1 -1
- package/src/weave/capabilities.d.ts +35 -7
- package/src/weave/capabilities.js +17 -0
- package/src/weave/capabilities.js.map +1 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unsafe-function-type, prefer-rest-params --
|
|
2
2
|
* ported from the matrix-tested web-fragments fork: the wrappers must forward the exact
|
|
3
3
|
* original `arguments` object to native DOM methods, and accept any native function shape. */
|
|
4
|
-
import { compatDomInsertion, compatMultiNodeDomInsertion, executeInertScript, executeInertPreloadLink, restoreScriptType, alreadyExecutedScriptsAndLinks, } from './script-execution.js';
|
|
4
|
+
import { compatDomInsertion, compatMultiNodeDomInsertion, executeInertScript, executeInertPreloadLink, INERT_SELECTOR, isBraidInertLink, isRunnable, markBraidInertLink, markGatewayContent, markRunnable, markStartedInPlace, restoreScriptType, alreadyExecutedScriptsAndLinks, } from './script-execution.js';
|
|
5
5
|
import { removeBornInertShadowing, unwrapBornInertScriptToLive } from './born-inert-scripts.js';
|
|
6
6
|
import { isDevMode } from '../config.js';
|
|
7
|
+
import { fragmentRootOf, subresourceUrlOverrides } from './subresource-urls.js';
|
|
7
8
|
/**
|
|
8
9
|
* The fragment boundary: all main-realm interception is confined here — the
|
|
9
10
|
* host page's `Node`/`Element` prototypes are never touched.
|
|
@@ -43,10 +44,12 @@ const native = {
|
|
|
43
44
|
fragmentAppend: DocumentFragment.prototype.append,
|
|
44
45
|
fragmentPrepend: DocumentFragment.prototype.prepend,
|
|
45
46
|
fragmentReplaceChildren: DocumentFragment.prototype.replaceChildren,
|
|
47
|
+
elementBefore: Element.prototype.before,
|
|
48
|
+
elementAfter: Element.prototype.after,
|
|
46
49
|
shadowRootInnerHTML: Object.getOwnPropertyDescriptor(ShadowRoot.prototype, 'innerHTML'),
|
|
47
50
|
};
|
|
48
51
|
export function createFragmentBoundary(options) {
|
|
49
|
-
const { realmDocument, shadowRoot, braidDocumentElement, abortSignal } = options;
|
|
52
|
+
const { realmDocument, shadowRoot, braidDocumentElement, abortSignal, htmlPolicy } = options;
|
|
50
53
|
const stampedNodes = new WeakSet();
|
|
51
54
|
const stampedProtos = new Map();
|
|
52
55
|
const stampedProtoSet = new WeakSet();
|
|
@@ -65,10 +68,87 @@ export function createFragmentBoundary(options) {
|
|
|
65
68
|
*/
|
|
66
69
|
function reviveInertScript(script) {
|
|
67
70
|
unwrapBornInertScriptToLive(script);
|
|
68
|
-
|
|
71
|
+
// only a script that may run at all: one markup wrote as `type="inert"` stays exactly that
|
|
72
|
+
if (script.getAttribute('type') === 'inert' && !alreadyExecutedScriptsAndLinks.has(script) && isRunnable(script)) {
|
|
69
73
|
restoreScriptType(script);
|
|
70
74
|
}
|
|
71
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* A clone carries its source's provenance, as the browser carries a script's started flag: a clone
|
|
78
|
+
* of a script that may run and has not yet may run, a clone of one that has run has run, and a
|
|
79
|
+
* clone of an inert link Braid made is Braid's. Matched by position: a deep clone has its source's
|
|
80
|
+
* shape. Only clones made through the boundary carry it — any other clone path (a `Range`, a
|
|
81
|
+
* fragment's own `DocumentFragment`) yields scripts that never run, which is the safe side.
|
|
82
|
+
*/
|
|
83
|
+
function inheritProvenance(source, clone, deep) {
|
|
84
|
+
if (!(source instanceof Element) && !(source instanceof DocumentFragment))
|
|
85
|
+
return;
|
|
86
|
+
const select = 'script,link[rel^="inert-"]';
|
|
87
|
+
const sources = [...(source instanceof Element && source.matches(select) ? [source] : [])];
|
|
88
|
+
const clones = [...(clone instanceof Element && clone.matches(select) ? [clone] : [])];
|
|
89
|
+
if (deep) {
|
|
90
|
+
sources.push(...source.querySelectorAll(select));
|
|
91
|
+
clones.push(...clone.querySelectorAll(select));
|
|
92
|
+
}
|
|
93
|
+
sources.forEach((element, index) => {
|
|
94
|
+
const copy = clones[index];
|
|
95
|
+
if (!copy || copy.localName !== element.localName)
|
|
96
|
+
return;
|
|
97
|
+
if (element.localName === 'script') {
|
|
98
|
+
if (alreadyExecutedScriptsAndLinks.has(element))
|
|
99
|
+
alreadyExecutedScriptsAndLinks.add(copy);
|
|
100
|
+
else if (isRunnable(element))
|
|
101
|
+
markRunnable(copy);
|
|
102
|
+
}
|
|
103
|
+
else if (isBraidInertLink(element)) {
|
|
104
|
+
markBraidInertLink(copy);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
if (deep)
|
|
108
|
+
inheritThroughTemplates(source, clone);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* A template's content is copied with it, but no selector enters it: pair the templates up and
|
|
112
|
+
* carry provenance into each copied content, which can itself be instantiated later.
|
|
113
|
+
*/
|
|
114
|
+
function inheritThroughTemplates(source, clone) {
|
|
115
|
+
const sources = [...(source instanceof Element && source.localName === 'template' ? [source] : []), ...source.querySelectorAll('template')];
|
|
116
|
+
const clones = [
|
|
117
|
+
...(clone instanceof Element && clone.localName === 'template' ? [clone] : []),
|
|
118
|
+
...(clone.querySelectorAll?.('template') ?? []),
|
|
119
|
+
];
|
|
120
|
+
sources.forEach((template, index) => {
|
|
121
|
+
const copy = clones[index];
|
|
122
|
+
if (!copy)
|
|
123
|
+
return;
|
|
124
|
+
inheritProvenance(template.content, copy.content, true);
|
|
125
|
+
carryProvenanceOnClone(copy.content);
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* The gateway's templates hold scripts a fragment instantiates later, with
|
|
130
|
+
* `template.content.cloneNode(true)`. A template's content is a DocumentFragment, which the
|
|
131
|
+
* boundary does not stamp, so each one gets its own `cloneNode` that carries provenance — an own
|
|
132
|
+
* property of the fragment's DOM object, not a host prototype.
|
|
133
|
+
*/
|
|
134
|
+
function carryProvenanceThroughTemplates(root) {
|
|
135
|
+
for (const template of root.querySelectorAll('template')) {
|
|
136
|
+
const content = template.content;
|
|
137
|
+
carryProvenanceOnClone(content);
|
|
138
|
+
carryProvenanceThroughTemplates(content);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function carryProvenanceOnClone(content) {
|
|
142
|
+
Object.defineProperty(content, 'cloneNode', {
|
|
143
|
+
configurable: true,
|
|
144
|
+
writable: true,
|
|
145
|
+
value: function templateContentCloneNode(deep) {
|
|
146
|
+
const clone = native.cloneNode.call(this, deep);
|
|
147
|
+
inheritProvenance(this, clone, Boolean(deep));
|
|
148
|
+
return clone;
|
|
149
|
+
},
|
|
150
|
+
});
|
|
151
|
+
}
|
|
72
152
|
function prepareForInsertion(node) {
|
|
73
153
|
if (node instanceof HTMLScriptElement) {
|
|
74
154
|
reviveInertScript(node);
|
|
@@ -162,7 +242,9 @@ export function createFragmentBoundary(options) {
|
|
|
162
242
|
}
|
|
163
243
|
function makeHtmlParsingOverrides(innerHTMLDescriptor) {
|
|
164
244
|
return {
|
|
165
|
-
//
|
|
245
|
+
// Scripts parsed from html never execute (per spec), so parsing only needs stamp propagation.
|
|
246
|
+
// A fragment with an HTML policy has the markup parsed and cleaned first (`html-policy.ts`),
|
|
247
|
+
// and the result inserted natively, so the write means what the native setter would have.
|
|
166
248
|
innerHTML: {
|
|
167
249
|
configurable: true,
|
|
168
250
|
enumerable: true,
|
|
@@ -170,7 +252,20 @@ export function createFragmentBoundary(options) {
|
|
|
170
252
|
return innerHTMLDescriptor.get.call(this);
|
|
171
253
|
},
|
|
172
254
|
set(value) {
|
|
173
|
-
|
|
255
|
+
// a shadow root's markup is parsed with its host for context, as the native setter does
|
|
256
|
+
const context = this instanceof ShadowRoot ? this.host : this;
|
|
257
|
+
const cleaned = htmlPolicy?.filter(value === null ? '' : value, context, 'innerHTML');
|
|
258
|
+
if (cleaned) {
|
|
259
|
+
// a template's markup is its content, not its children
|
|
260
|
+
const target = this instanceof HTMLTemplateElement ? this.content : this;
|
|
261
|
+
if (target instanceof Element)
|
|
262
|
+
native.elementReplaceChildren.call(target, cleaned);
|
|
263
|
+
else
|
|
264
|
+
native.fragmentReplaceChildren.call(target, cleaned);
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
innerHTMLDescriptor.set.call(this, value);
|
|
268
|
+
}
|
|
174
269
|
stampTree(this);
|
|
175
270
|
},
|
|
176
271
|
},
|
|
@@ -193,10 +288,35 @@ export function createFragmentBoundary(options) {
|
|
|
193
288
|
configurable: true,
|
|
194
289
|
writable: true,
|
|
195
290
|
value: function boundaryInsertAdjacentHTML(position, text) {
|
|
196
|
-
const result = native.insertAdjacentHTML.call(this, position, text);
|
|
197
291
|
const lowercasePosition = String(position).toLowerCase();
|
|
198
|
-
|
|
199
|
-
|
|
292
|
+
const outside = lowercasePosition === 'beforebegin' || lowercasePosition === 'afterend';
|
|
293
|
+
const inside = lowercasePosition === 'afterbegin' || lowercasePosition === 'beforeend';
|
|
294
|
+
const parent = this.parentNode;
|
|
295
|
+
// the native method's context and errors, so a policy changes nothing but what is removed:
|
|
296
|
+
// outside the element, its parent is the context, or a <body> when the parent is no element
|
|
297
|
+
const context = inside
|
|
298
|
+
? this
|
|
299
|
+
: parent instanceof Element
|
|
300
|
+
? parent
|
|
301
|
+
: this.ownerDocument.createElement('body');
|
|
302
|
+
const cleaned = htmlPolicy && (inside || (outside && parent && parent.nodeType !== Node.DOCUMENT_NODE))
|
|
303
|
+
? htmlPolicy.filter(text, context, 'insertAdjacentHTML')
|
|
304
|
+
: null;
|
|
305
|
+
if (cleaned) {
|
|
306
|
+
if (lowercasePosition === 'beforebegin')
|
|
307
|
+
native.elementBefore.call(this, cleaned);
|
|
308
|
+
else if (lowercasePosition === 'afterbegin')
|
|
309
|
+
native.elementPrepend.call(this, cleaned);
|
|
310
|
+
else if (lowercasePosition === 'beforeend')
|
|
311
|
+
native.elementAppend.call(this, cleaned);
|
|
312
|
+
else
|
|
313
|
+
native.elementAfter.call(this, cleaned);
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
// also what throws for an unknown position, or outside an element with no parent
|
|
317
|
+
native.insertAdjacentHTML.call(this, position, text);
|
|
318
|
+
}
|
|
319
|
+
stampTree(inside ? this : this.parentNode ?? this);
|
|
200
320
|
},
|
|
201
321
|
},
|
|
202
322
|
cloneNode: {
|
|
@@ -204,6 +324,7 @@ export function createFragmentBoundary(options) {
|
|
|
204
324
|
writable: true,
|
|
205
325
|
value: function boundaryCloneNode(deep) {
|
|
206
326
|
const clone = native.cloneNode.call(this, deep);
|
|
327
|
+
inheritProvenance(this, clone, Boolean(deep));
|
|
207
328
|
stampTree(clone);
|
|
208
329
|
return clone;
|
|
209
330
|
},
|
|
@@ -229,6 +350,15 @@ export function createFragmentBoundary(options) {
|
|
|
229
350
|
},
|
|
230
351
|
...makeHtmlParsingOverrides(native.elementInnerHTML),
|
|
231
352
|
};
|
|
353
|
+
/**
|
|
354
|
+
* What a URL set from fragment script resolves against, read when it is set: the namespace from
|
|
355
|
+
* the realm's base, and the fragment's own `<base href>` from its markup — the two the gateway
|
|
356
|
+
* uses for the same URL in markup, so markup and script agree on every route.
|
|
357
|
+
*/
|
|
358
|
+
const urlBase = () => ({
|
|
359
|
+
root: fragmentRootOf(realmDocument.baseURI),
|
|
360
|
+
baseHref: braidDocumentElement.querySelector('base[href]')?.getAttribute('href') ?? '/',
|
|
361
|
+
});
|
|
232
362
|
function stampNode(node) {
|
|
233
363
|
if (node.nodeType !== Node.ELEMENT_NODE)
|
|
234
364
|
return;
|
|
@@ -241,7 +371,12 @@ export function createFragmentBoundary(options) {
|
|
|
241
371
|
}
|
|
242
372
|
let stampedProto = stampedProtos.get(proto);
|
|
243
373
|
if (!stampedProto) {
|
|
244
|
-
|
|
374
|
+
// a subresource URL the fragment's code sets resolves into its namespace, as one in its
|
|
375
|
+
// markup does (see subresource-urls.ts); keyed by prototype, which fixes the element type
|
|
376
|
+
stampedProto = Object.create(proto, {
|
|
377
|
+
...elementOverrides,
|
|
378
|
+
...subresourceUrlOverrides(proto, node.localName, urlBase),
|
|
379
|
+
});
|
|
245
380
|
stampedProtos.set(proto, stampedProto);
|
|
246
381
|
stampedProtoSet.add(stampedProto);
|
|
247
382
|
}
|
|
@@ -279,6 +414,12 @@ export function createFragmentBoundary(options) {
|
|
|
279
414
|
// stamp the initial fragment DOM (for pierced fragments this includes the SSR'ed content;
|
|
280
415
|
// for slot-fetched fragments this is the already-inserted, neutralized content)
|
|
281
416
|
stampTree(braidDocumentElement);
|
|
417
|
+
// that content is the gateway's: its scripts may run and its inert links are the ones it
|
|
418
|
+
// neutralized, and nothing of the fragment's has run yet to have written any of its own
|
|
419
|
+
markGatewayContent(braidDocumentElement);
|
|
420
|
+
carryProvenanceThroughTemplates(braidDocumentElement);
|
|
421
|
+
// before the observer starts, so moving them out and back is not mistaken for an insertion
|
|
422
|
+
markStartedInPlace(braidDocumentElement);
|
|
282
423
|
/**
|
|
283
424
|
* The boundary observer: activates inert scripts/preload-links that entered the fragment's
|
|
284
425
|
* DOM through unstamped paths, stamps stray subtrees, and reports bypasses in dev mode.
|
|
@@ -298,18 +439,23 @@ export function createFragmentBoundary(options) {
|
|
|
298
439
|
}
|
|
299
440
|
stampTree(addedElement);
|
|
300
441
|
}
|
|
442
|
+
// scripts that arrived by a path the boundary did not intercept were not marked started
|
|
443
|
+
markStartedInPlace(addedElement);
|
|
301
444
|
activateInertScriptsAndLinks(addedElement);
|
|
302
445
|
}
|
|
303
446
|
}
|
|
304
447
|
});
|
|
305
448
|
function activateInertScriptsAndLinks(root) {
|
|
306
|
-
const inertSelector = 'script[type="inert"],link[rel="inert-preload"],link[rel="inert-prefetch"],link[rel="inert-modulepreload"]';
|
|
307
449
|
const candidates = [];
|
|
308
|
-
if (root.matches(
|
|
450
|
+
if (root.matches(INERT_SELECTOR)) {
|
|
309
451
|
candidates.push(root);
|
|
310
452
|
}
|
|
311
|
-
candidates.push(...root.querySelectorAll(
|
|
453
|
+
candidates.push(...root.querySelectorAll(INERT_SELECTOR));
|
|
312
454
|
for (const candidate of candidates) {
|
|
455
|
+
// a script that may not run, or a marker Braid did not set, is markup the fragment wrote, and
|
|
456
|
+
// it stays as inert as it would be natively — see `isRunnable`
|
|
457
|
+
if (candidate instanceof HTMLLinkElement ? !isBraidInertLink(candidate) : !isRunnable(candidate))
|
|
458
|
+
continue;
|
|
313
459
|
if (candidate instanceof HTMLLinkElement) {
|
|
314
460
|
executeInertPreloadLink(candidate, realmDocument);
|
|
315
461
|
}
|
|
@@ -329,6 +475,7 @@ export function createFragmentBoundary(options) {
|
|
|
329
475
|
return {
|
|
330
476
|
stampNode,
|
|
331
477
|
stampTree,
|
|
478
|
+
inheritProvenance,
|
|
332
479
|
disconnect: () => observer.disconnect(),
|
|
333
480
|
};
|
|
334
481
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fragment-boundary.js","sourceRoot":"","sources":["../../../../../libs/core/src/compat/fragment-boundary.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fragment-boundary.js","sourceRoot":"","sources":["../../../../../libs/core/src/compat/fragment-boundary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { FragmentCapabilities } from '../weave/capabilities.js';
|
|
2
|
+
/**
|
|
3
|
+
* What a compat fragment's own HTML writes may put in the page: `capabilities.html`, opt-in.
|
|
4
|
+
*
|
|
5
|
+
* The gateway already neutralizes the markup a fragment *sends*: no handler, script, `javascript:`
|
|
6
|
+
* frame or meta refresh in server-rendered HTML runs in the host realm. Markup a fragment's code
|
|
7
|
+
* *writes* at runtime has had no such treatment. `el.innerHTML = userInput` with a stray
|
|
8
|
+
* `<img onerror>` compiles that handler in the host page's realm, because the element is the host
|
|
9
|
+
* document's — an XSS in one fragment becomes script in the shell.
|
|
10
|
+
*
|
|
11
|
+
* - `'sanitize'` removes what could run, or make Braid run something: every `<script>`, `on*`
|
|
12
|
+
* attributes, `javascript:` URLs, frame documents from anything but http(s) (the gateway's
|
|
13
|
+
* allowlist), SVG animation (which can set a link's `href`), meta refresh, `<base>`, Braid's own
|
|
14
|
+
* elements (a written `<fragment-slot entry>` would boot a realm), and the `inert-*` links and
|
|
15
|
+
* `data-script-type` markers only the gateway may write.
|
|
16
|
+
* - `'report'` writes the markup unchanged, and warns once per distinct finding with what
|
|
17
|
+
* `'sanitize'` would have removed. It parses every write a second time to know, so it is for
|
|
18
|
+
* development and staging.
|
|
19
|
+
*
|
|
20
|
+
* **Parsing is the native parse, somewhere harmless.** The markup is parsed by the browser's own
|
|
21
|
+
* fragment parser, with an element of the same name and namespace as the write's target for
|
|
22
|
+
* context, in a document with no browsing context — where nothing loads, runs or dispatches. So a
|
|
23
|
+
* write into an `<svg>` yields SVG, a `<tr>` into a `<table>` gets its `<tbody>`, exactly as the
|
|
24
|
+
* native setter would; only then are the cleaned nodes moved into the page. They are never
|
|
25
|
+
* serialized and parsed again: a second parse is how sanitizers get bypassed. Writes whose result
|
|
26
|
+
* is only ever text — into a `<textarea>`, `<style>`, `<script>`, `<title>` — and `TrustedHTML`
|
|
27
|
+
* values, which the host's own policy already vetted, are passed straight to the native setter.
|
|
28
|
+
* Any other value is converted to a string, as the native setter would, and cleaned.
|
|
29
|
+
*
|
|
30
|
+
* Not in scope: CSS. A written `<style>`, stylesheet link or `style` attribute can still restyle or
|
|
31
|
+
* overlay the host page.
|
|
32
|
+
*
|
|
33
|
+
* Covered: `innerHTML` on the fragment's elements and shadow root, and `insertAdjacentHTML` — the
|
|
34
|
+
* sinks the fragment boundary already stamps. Not covered: `outerHTML`, `setHTMLUnsafe`,
|
|
35
|
+
* `Range.createContextualFragment`, markup parsed elsewhere and then inserted (`DOMParser`,
|
|
36
|
+
* `document.implementation`, `jQuery.parseHTML`), `document.write`, captured native setters, and DOM
|
|
37
|
+
* a fragment builds attribute by attribute. A custom element the host defines upgrades wherever it
|
|
38
|
+
* is inserted, so its tag in written markup is as capable as the element is.
|
|
39
|
+
*/
|
|
40
|
+
export type HtmlPolicyMode = 'report' | 'sanitize';
|
|
41
|
+
export declare function resolveHtmlPolicy(capabilities: FragmentCapabilities | undefined, fragmentId: string): HtmlPolicyMode | null;
|
|
42
|
+
export interface HtmlPolicy {
|
|
43
|
+
/**
|
|
44
|
+
* Parses `markup` as a write into `context` through `sink`. Returns the cleaned nodes to insert
|
|
45
|
+
* in its place under `'sanitize'`, or null to let the native setter write `markup` as it is:
|
|
46
|
+
* always under `'report'` (after warning), and for writes that cannot produce markup.
|
|
47
|
+
*/
|
|
48
|
+
filter(markup: unknown, context: Element, sink: string): DocumentFragment | null;
|
|
49
|
+
}
|
|
50
|
+
export declare function createHtmlPolicy(mode: HtmlPolicyMode, fragmentId: string, mainDocument: Document): HtmlPolicy;
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
const XHTML = 'http://www.w3.org/1999/xhtml';
|
|
2
|
+
/** Context elements whose fragment parse yields text only: no tag or attribute can result. */
|
|
3
|
+
const TEXT_ONLY_CONTEXTS = new Set(['textarea', 'title', 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes', 'noscript', 'plaintext']);
|
|
4
|
+
/** Attributes whose value is a URL that runs on navigation or load. */
|
|
5
|
+
const URL_ATTRIBUTES = new Set(['href', 'src', 'action', 'formaction', 'xlink:href', 'data']);
|
|
6
|
+
/**
|
|
7
|
+
* Elements removed outright, with what they would do:
|
|
8
|
+
* - SVG animation, which can set an `href` to `javascript:` (DOMPurify forbids these for the same
|
|
9
|
+
* reason);
|
|
10
|
+
* - `<base>`, which re-roots how Braid resolves the fragment's own URLs;
|
|
11
|
+
* - Braid's own elements, which boot realms and deliver content when they connect.
|
|
12
|
+
*/
|
|
13
|
+
const REMOVED_ELEMENTS = new Map([
|
|
14
|
+
['animate', 'SVG animation'],
|
|
15
|
+
['set', 'SVG animation'],
|
|
16
|
+
['animatemotion', 'SVG animation'],
|
|
17
|
+
['animatetransform', 'SVG animation'],
|
|
18
|
+
['discard', 'SVG animation'],
|
|
19
|
+
['base', 'a <base>'],
|
|
20
|
+
['fragment-slot', 'a <fragment-slot>'],
|
|
21
|
+
['braid-late', 'a <braid-late>'],
|
|
22
|
+
['braid-late-end', 'a <braid-late-end>'],
|
|
23
|
+
]);
|
|
24
|
+
/** Elements whose source is a document of its own, and the attribute that names it. */
|
|
25
|
+
const FRAME_SOURCES = new Map([
|
|
26
|
+
['iframe', 'src'],
|
|
27
|
+
['frame', 'src'],
|
|
28
|
+
['embed', 'src'],
|
|
29
|
+
['object', 'data'],
|
|
30
|
+
]);
|
|
31
|
+
const MAX_WARNINGS = 50;
|
|
32
|
+
export function resolveHtmlPolicy(capabilities, fragmentId) {
|
|
33
|
+
const grant = capabilities?.html;
|
|
34
|
+
if (grant === undefined)
|
|
35
|
+
return null;
|
|
36
|
+
if (grant === 'report' || grant === 'sanitize')
|
|
37
|
+
return grant;
|
|
38
|
+
console.warn(`[braid:${fragmentId}] ignoring capabilities.html ${JSON.stringify(grant)}; expected "report" or "sanitize"`);
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
export function createHtmlPolicy(mode, fragmentId, mainDocument) {
|
|
42
|
+
const warned = new Set();
|
|
43
|
+
// no browsing context: nothing parsed here fetches, runs, or fires an event
|
|
44
|
+
const inert = mainDocument.implementation.createHTMLDocument('');
|
|
45
|
+
return {
|
|
46
|
+
filter(markup, context, sink) {
|
|
47
|
+
// a TrustedHTML was vetted by the host's own policy, and re-parsing it as a string here would
|
|
48
|
+
// be refused by that policy anyway; anything else is a string to the native setter, and here
|
|
49
|
+
const trustedTypes = globalThis.trustedTypes;
|
|
50
|
+
if (trustedTypes?.isHTML(markup))
|
|
51
|
+
return null;
|
|
52
|
+
markup = String(markup);
|
|
53
|
+
if (context.namespaceURI === XHTML && TEXT_ONLY_CONTEXTS.has(context.localName))
|
|
54
|
+
return null;
|
|
55
|
+
const parsingContext = inert.createElementNS(context.namespaceURI, context.localName);
|
|
56
|
+
parsingContext.innerHTML = markup;
|
|
57
|
+
const parsed = parsingContext instanceof HTMLTemplateElement ? parsingContext.content : parsingContext;
|
|
58
|
+
const findings = clean(parsed);
|
|
59
|
+
if (mode === 'report') {
|
|
60
|
+
for (const finding of findings) {
|
|
61
|
+
// keyed by what was found, not where: tag names are the writer's to choose, and a key per
|
|
62
|
+
// tag would let a flood of harmless ones use up the warnings before the one that matters
|
|
63
|
+
const key = `${sink} ${finding.kind}`;
|
|
64
|
+
if (warned.has(key))
|
|
65
|
+
continue;
|
|
66
|
+
if (warned.size === MAX_WARNINGS) {
|
|
67
|
+
warned.add(key);
|
|
68
|
+
console.warn(`[braid:${fragmentId}] further capabilities.html findings are not reported`);
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (warned.size > MAX_WARNINGS)
|
|
72
|
+
continue;
|
|
73
|
+
warned.add(key);
|
|
74
|
+
console.warn(`[braid:${fragmentId}] ${sink} wrote markup with ${finding.kind} on <${JSON.stringify(finding.element.slice(0, 32)).slice(1, -1)}>; ` +
|
|
75
|
+
`capabilities.html "sanitize" would remove it`);
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
const fragment = inert.createDocumentFragment();
|
|
80
|
+
fragment.append(...parsed.childNodes);
|
|
81
|
+
return fragment;
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/** Removes what may run, and names what it removed. Mutates `root`. */
|
|
86
|
+
function clean(root) {
|
|
87
|
+
const findings = [];
|
|
88
|
+
const found = (kind, element) => findings.push({ kind, element });
|
|
89
|
+
// templates nest: their contents are separate fragments the selector does not enter
|
|
90
|
+
const roots = [root];
|
|
91
|
+
while (roots.length) {
|
|
92
|
+
const current = roots.pop();
|
|
93
|
+
for (const element of [...current.querySelectorAll('*')]) {
|
|
94
|
+
const name = element.localName;
|
|
95
|
+
const lowerName = name.toLowerCase();
|
|
96
|
+
// Every script, data blocks included: the compat boundary runs a `type="inert"` one in the
|
|
97
|
+
// realm, and a fragment's runtime markup has no need of either.
|
|
98
|
+
if (lowerName === 'script') {
|
|
99
|
+
found('a <script>', name);
|
|
100
|
+
element.remove();
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
const removed = REMOVED_ELEMENTS.get(lowerName);
|
|
104
|
+
if (removed) {
|
|
105
|
+
found(removed, name);
|
|
106
|
+
element.remove();
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (lowerName === 'meta' && element.getAttribute('http-equiv')?.trim().toLowerCase() === 'refresh') {
|
|
110
|
+
found('a meta refresh', name);
|
|
111
|
+
element.remove();
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
// only the gateway writes these: the boundary turns them back into live preloads in the realm
|
|
115
|
+
if (lowerName === 'link' && /^inert-/i.test(element.getAttribute('rel')?.trim() ?? '')) {
|
|
116
|
+
found('an inert-* link', name);
|
|
117
|
+
element.remove();
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
if (lowerName === 'template')
|
|
121
|
+
roots.push(element.content);
|
|
122
|
+
for (const attribute of [...element.attributes]) {
|
|
123
|
+
const attributeName = attribute.name.toLowerCase();
|
|
124
|
+
const attributeScheme = scheme(attribute.value);
|
|
125
|
+
if (/^on/.test(attributeName)) {
|
|
126
|
+
found(`an ${attributeName} handler`, name);
|
|
127
|
+
element.removeAttribute(attribute.name);
|
|
128
|
+
}
|
|
129
|
+
else if (attributeName === 'srcdoc' || attributeName === 'data-script-type') {
|
|
130
|
+
found(attributeName, name);
|
|
131
|
+
element.removeAttribute(attribute.name);
|
|
132
|
+
}
|
|
133
|
+
else if (FRAME_SOURCES.get(lowerName) === attributeName) {
|
|
134
|
+
// an allowlist, as the gateway's: a frame loads a document by URL, or none
|
|
135
|
+
if (attributeScheme !== undefined && attributeScheme !== 'http' && attributeScheme !== 'https' && attribute.value.trim().toLowerCase() !== 'about:blank') {
|
|
136
|
+
found(`a ${attributeScheme}: document`, name);
|
|
137
|
+
element.removeAttribute(attribute.name);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else if (URL_ATTRIBUTES.has(attributeName) && attributeScheme === 'javascript') {
|
|
141
|
+
found(`a javascript: ${attributeName}`, name);
|
|
142
|
+
element.removeAttribute(attribute.name);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return findings;
|
|
148
|
+
}
|
|
149
|
+
/** A URL's scheme as the URL parser reads it: tabs, newlines and leading controls ignored. */
|
|
150
|
+
function scheme(value) {
|
|
151
|
+
// eslint-disable-next-line no-control-regex
|
|
152
|
+
const url = value.replace(/[\t\n\r]/g, '').replace(/^[\u0000- ]+/, '').toLowerCase();
|
|
153
|
+
return /^([a-z][a-z0-9+.-]*):/.exec(url)?.[1];
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=html-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-policy.js","sourceRoot":"","sources":["../../../../../libs/core/src/compat/html-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CompatShadowRoot } from './metadata.js';
|
|
2
2
|
import { FragmentBoundary } from './fragment-boundary.js';
|
|
3
|
+
import { HtmlPolicyMode } from './html-policy.js';
|
|
3
4
|
import { RealmHandle } from '../realm/realm-manager.js';
|
|
4
5
|
/**
|
|
5
6
|
* Realm-side monkey patches: applied to the fragment's own realm window so
|
|
@@ -19,4 +20,4 @@ export interface RealmContext extends FragmentBoundary {
|
|
|
19
20
|
*/
|
|
20
21
|
bootComplete(): void;
|
|
21
22
|
}
|
|
22
|
-
export declare function initializeRealmContext(realm: RealmHandle, fragmentShadowRoot: CompatShadowRoot, braidDocumentElement: HTMLElement, boundNavigation: boolean, fragmentAbortController: AbortController, sharedGlobals?: readonly string[]): RealmContext;
|
|
23
|
+
export declare function initializeRealmContext(realm: RealmHandle, fragmentShadowRoot: CompatShadowRoot, braidDocumentElement: HTMLElement, boundNavigation: boolean, fragmentAbortController: AbortController, sharedGlobals?: readonly string[], storagePartition?: string, htmlPolicy?: HtmlPolicyMode): RealmContext;
|