From 81e48ed450b2c6169f50465bca8542bfbca6b240 Mon Sep 17 00:00:00 2001 From: rootvector2 Date: Sun, 31 May 2026 17:50:03 +0530 Subject: [PATCH] sanitize javascript: urls in formaction on button and input --- .../integration-tests/test/attributes-test.ts | 18 ++++++++++++++++++ .../runtime/lib/dom/sanitized-values.ts | 4 ++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/@glimmer-workspace/integration-tests/test/attributes-test.ts b/packages/@glimmer-workspace/integration-tests/test/attributes-test.ts index eef13f25c13..1e04d85c353 100644 --- a/packages/@glimmer-workspace/integration-tests/test/attributes-test.ts +++ b/packages/@glimmer-workspace/integration-tests/test/attributes-test.ts @@ -719,3 +719,21 @@ jitSuite( protected isSelfClosing = false; } ); + +jitSuite( + class extends BoundValuesToSpecialAttributeTests { + static suiteName = 'button[formaction] attribute'; + protected tag = 'button'; + protected attr = 'formaction'; + } +); + +jitSuite( + class extends BoundValuesToSpecialAttributeTests { + static suiteName = 'input[formaction] attribute'; + protected tag = 'input'; + protected attr = 'formaction'; + protected override isEmptyElement = true; + protected isSelfClosing = false; + } +); diff --git a/packages/@glimmer/runtime/lib/dom/sanitized-values.ts b/packages/@glimmer/runtime/lib/dom/sanitized-values.ts index a5203749453..e6e5e39a837 100644 --- a/packages/@glimmer/runtime/lib/dom/sanitized-values.ts +++ b/packages/@glimmer/runtime/lib/dom/sanitized-values.ts @@ -4,11 +4,11 @@ import { isSafeString, normalizeStringValue } from '../dom/normalize'; const badProtocols = ['javascript:', 'vbscript:']; -const badTags = ['A', 'BODY', 'LINK', 'IMG', 'IFRAME', 'BASE', 'FORM']; +const badTags = ['A', 'BODY', 'LINK', 'IMG', 'IFRAME', 'BASE', 'FORM', 'BUTTON', 'INPUT']; const badTagsForDataURI = ['EMBED']; -const badAttributes = ['href', 'src', 'background', 'action']; +const badAttributes = ['href', 'src', 'background', 'action', 'formaction']; const badAttributesForDataURI = ['src'];