secure-ui-components 0.2.1 → 0.2.3

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.
Files changed (29) hide show
  1. package/README.md +131 -7
  2. package/dist/components/secure-form/secure-form.d.ts.map +1 -1
  3. package/dist/components/secure-form/secure-form.js +15 -0
  4. package/dist/components/secure-form/secure-form.js.map +1 -1
  5. package/dist/components/secure-input/secure-input.css +67 -1
  6. package/dist/components/secure-input/secure-input.d.ts +14 -0
  7. package/dist/components/secure-input/secure-input.d.ts.map +1 -1
  8. package/dist/components/secure-input/secure-input.js +63 -0
  9. package/dist/components/secure-input/secure-input.js.map +1 -1
  10. package/dist/components/secure-password-confirm/secure-password-confirm.d.ts.map +1 -1
  11. package/dist/components/secure-password-confirm/secure-password-confirm.js +2 -0
  12. package/dist/components/secure-password-confirm/secure-password-confirm.js.map +1 -1
  13. package/dist/components/secure-telemetry-provider/secure-telemetry-provider.d.ts +1 -0
  14. package/dist/components/secure-telemetry-provider/secure-telemetry-provider.d.ts.map +1 -1
  15. package/dist/components/secure-telemetry-provider/secure-telemetry-provider.js +32 -2
  16. package/dist/components/secure-telemetry-provider/secure-telemetry-provider.js.map +1 -1
  17. package/dist/components/secure-textarea/secure-textarea.css +66 -1
  18. package/dist/components/secure-textarea/secure-textarea.d.ts +11 -0
  19. package/dist/components/secure-textarea/secure-textarea.d.ts.map +1 -1
  20. package/dist/components/secure-textarea/secure-textarea.js +56 -0
  21. package/dist/components/secure-textarea/secure-textarea.js.map +1 -1
  22. package/dist/core/base-component.d.ts +29 -0
  23. package/dist/core/base-component.d.ts.map +1 -1
  24. package/dist/core/base-component.js +96 -2
  25. package/dist/core/base-component.js.map +1 -1
  26. package/dist/core/types.d.ts +23 -0
  27. package/dist/core/types.d.ts.map +1 -1
  28. package/dist/package.json +1 -1
  29. package/package.json +1 -1
package/README.md CHANGED
@@ -6,17 +6,19 @@ Security-first Web Component library with built-in behavioral telemetry. Zero de
6
6
 
7
7
  ## Features
8
8
 
9
- - **10 Secure Components** — Input, Textarea, Select, Form, File Upload, DateTime, Table, Submit Button, Card, Telemetry Provider
9
+ - **11 Secure Components** — Input, Textarea, Select, Form, File Upload, DateTime, Table, Submit Button, Card, Password Confirm, Telemetry Provider
10
10
  - **4-Tier Security System** — `public`, `authenticated`, `sensitive`, `critical`
11
11
  - **Behavioral Telemetry** — Every field collects typing patterns, paste detection, dwell time, and correction signals automatically
12
12
  - **Risk Scoring** — `<secure-form>` aggregates field signals into a session-level risk score at submission
13
- - **Signed Envelopes** — `<secure-telemetry-provider>` detects automation/headless browsers and signs every submission with HMAC-SHA-256
13
+ - **Injection Detection** — All input fields scan for XSS, script injection, and template injection patterns in real time; fires `secure-threat-detected` with the matched pattern ID
14
+ - **CSRF Threat Detection** — `<secure-form>` fires `secure-threat-detected` at submission when a CSRF token is absent on `sensitive` or `critical` tier forms
15
+ - **Signed Envelopes** — `<secure-telemetry-provider>` detects automation/headless browsers, accumulates threat signals, and signs every submission with HMAC-SHA-256 (signing key cached per session)
14
16
  - **Zero Dependencies** — Pure TypeScript, no runtime dependencies
15
17
  - **Progressive Enhancement** — All components render meaningful markup and work without JavaScript
16
18
  - **CSP-Safe** — Styles loaded via `<link>` from `'self'`; no `unsafe-inline` required
17
19
  - **SSR Friendly** — Adopts server-rendered markup on upgrade; no document access in constructors
18
20
  - **Fully Customisable** — CSS Design Tokens + `::part()` API
19
- - **Comprehensive Testing** — 869 tests, 80%+ branch coverage
21
+ - **Comprehensive Testing** — 1066 tests, 80%+ branch coverage
20
22
 
21
23
  ---
22
24
 
@@ -30,13 +32,13 @@ Field interaction → Behavioral signals → Risk score → Signed envelop
30
32
  ```
31
33
 
32
34
  **Layer 1 — Field-level signals** (`SecureBaseComponent`)
33
- Every secure field silently records: dwell time from focus to first keystroke, typing velocity, correction count (backspace/delete), paste detection, autofill detection, focus count, and blur-without-change patterns.
35
+ Every secure field silently records: dwell time from focus to first keystroke, typing velocity, correction count (backspace/delete), paste detection, autofill detection, focus count, and blur-without-change patterns. On every input event, the raw value is scanned against injection patterns (XSS, script tags, JS protocols, event handlers, template injection, and more) — a `secure-threat-detected` event is dispatched if a match is found, with the matched pattern ID but never the raw value.
34
36
 
35
37
  **Layer 2 — Session aggregation** (`<secure-form>`)
36
- At submission, the form queries `getFieldTelemetry()` from every child field, produces per-field snapshots, and computes a composite risk score from 0–100. The telemetry payload travels alongside form data in a single `fetch` request as `_telemetry`.
38
+ At submission, the form queries `getFieldTelemetry()` from every child field, produces per-field snapshots, and computes a composite risk score from 0–100. For `sensitive` and `critical` tiers, a missing CSRF token at submission time triggers a `secure-threat-detected` event before the request proceeds. The telemetry payload travels alongside form data in a single `fetch` request as `_telemetry`.
37
39
 
38
40
  **Layer 3 — Environmental signals** (`<secure-telemetry-provider>`)
39
- An optional overlay that wraps `<secure-form>`. Monitors for WebDriver/headless flags, DOM script injection (via `MutationObserver`), suspicious screen dimensions, and pointer/keyboard activity. Signs the final envelope with HMAC-SHA-256 so the server can detect replay attacks.
41
+ An optional overlay that wraps `<secure-form>`. Monitors for WebDriver/headless flags, DOM script injection (via `MutationObserver`), suspicious screen dimensions, and pointer/keyboard activity. Accumulates all `secure-threat-detected` signals from child components during the session into `threatSignals`. Signs the final envelope with HMAC-SHA-256 using a cached `CryptoKey` (imported once per key value, re-imported only on rotation) so the server can detect replay attacks and inspect any injection or CSRF threats that occurred during the session.
40
42
 
41
43
  **What the server receives (enhanced submission):**
42
44
 
@@ -71,7 +73,16 @@ An optional overlay that wraps `<secure-form>`. Monitors for WebDriver/headless
71
73
  "webdriverDetected": false,
72
74
  "headlessDetected": false,
73
75
  "mouseMovementDetected": true,
74
- "pointerType": "mouse"
76
+ "pointerType": "mouse",
77
+ "threatSignals": [
78
+ {
79
+ "fieldName": "comment",
80
+ "threatType": "injection",
81
+ "patternId": "script-tag",
82
+ "tier": "sensitive",
83
+ "timestamp": 1743616200000
84
+ }
85
+ ]
75
86
  },
76
87
  "signature": "7d3a..."
77
88
  }
@@ -219,6 +230,7 @@ el.blur()
219
230
  |-------|--------|
220
231
  | `secure-input` | `{ name, value, masked, tier }` |
221
232
  | `secure-audit` | `{ event, tier, timestamp, … }` |
233
+ | `secure-threat-detected` | `{ fieldName, threatType: 'injection', patternId, tier, timestamp }` — fired when a known injection pattern is detected in the field value |
222
234
 
223
235
  **Example**
224
236
 
@@ -327,6 +339,7 @@ el.submit() // programmatic submit (triggers validation + telemetry)
327
339
  |-------|--------|
328
340
  | `secure-form-submit` | `{ formData, formElement, telemetry, preventDefault() }` — cancelable |
329
341
  | `secure-form-success` | `{ formData, response, telemetry }` — only when `enhance` is set |
342
+ | `secure-threat-detected` | `{ fieldName, threatType: 'csrf-token-absent', patternId, tier, timestamp }` — fired on `sensitive`/`critical` tiers when CSRF token is absent at submission |
330
343
 
331
344
  **`telemetry` shape** (`SessionTelemetry`):
332
345
 
@@ -411,6 +424,7 @@ provider.sign(signals) // Promise<SignedTelemetryEnvelope>
411
424
  | `pointerType` | Last pointer event type: `mouse` \| `touch` \| `pen` \| `none` |
412
425
  | `mouseMovementDetected` | Any `mousemove` event fired during session |
413
426
  | `keyboardActivityDetected` | Any `keydown` event fired during session |
427
+ | `threatSignals` | Array of `ThreatDetectedDetail` objects accumulated from all `secure-threat-detected` events during the session; `undefined` when no threats were detected |
414
428
 
415
429
  **How the envelope is injected**
416
430
 
@@ -430,6 +444,7 @@ The provider listens for `secure-form-submit` on itself (bubbles from the nested
430
444
  **Security notes**
431
445
 
432
446
  - The `signing-key` is a *symmetric* secret. For strong guarantees, rotate it per-session via a server nonce endpoint rather than hardcoding it as an attribute.
447
+ - The `CryptoKey` is imported from the `signing-key` attribute once and cached for the lifetime of the component. It is re-imported only when the attribute value changes, and cleared on `disconnectedCallback`. This avoids the cost of re-importing on every submission.
433
448
  - All signals are heuristic — a determined attacker can spoof them. The value is raising the cost of scripted attacks.
434
449
  - In non-secure contexts (`http://`) `SubtleCrypto` is unavailable; the signature will be an empty string. The server should treat unsigned envelopes with reduced trust.
435
450
 
@@ -733,6 +748,57 @@ payButton.addEventListener('click', async () => {
733
748
 
734
749
  ---
735
750
 
751
+ ### `<secure-password-confirm>`
752
+
753
+ Dual-field password entry with real-time match validation, strength indicator, and injection detection on both the password and confirm inputs. Both fields use `type="password"` with autocomplete disabled at `sensitive`/`critical` tiers.
754
+
755
+ **Attributes**
756
+
757
+ | Attribute | Description |
758
+ |-----------|-------------|
759
+ | `label` | Legend displayed above the field group |
760
+ | `name` | Base name for the hidden form input |
761
+ | `required` | Mark as required |
762
+ | `disabled` | Disable both fields |
763
+ | `security-tier` | Security tier |
764
+
765
+ **Properties & Methods**
766
+
767
+ ```js
768
+ const el = document.querySelector('secure-password-confirm');
769
+
770
+ el.valid // true when both fields match and pass validation
771
+ el.name
772
+ el.getPasswordValue() // string — raw password; use only for form handoff
773
+ el.getFieldTelemetry() // composite FieldTelemetry across both inputs
774
+ el.getAuditLog()
775
+ el.clearAuditLog()
776
+ el.focus()
777
+ ```
778
+
779
+ **Events**
780
+
781
+ | Event | Detail |
782
+ |-------|--------|
783
+ | `secure-password-match` | `{ name, matched: true }` — fired when both fields contain the same value |
784
+ | `secure-password-mismatch` | `{ name, matched: false }` — fired when the values diverge |
785
+ | `secure-threat-detected` | `{ fieldName, threatType: 'injection', patternId, tier, timestamp }` — fired if an injection pattern is typed into either field |
786
+
787
+ **Form participation**
788
+
789
+ A hidden `<input type="hidden">` is created in the light DOM, kept in sync with the password value, and cleared on `disconnectedCallback`.
790
+
791
+ ```html
792
+ <secure-password-confirm
793
+ label="New password"
794
+ name="password"
795
+ required
796
+ security-tier="critical"
797
+ ></secure-password-confirm>
798
+ ```
799
+
800
+ ---
801
+
736
802
  ### `<secure-submit-button>`
737
803
 
738
804
  Accessible submit button with loading state and automatic form-validity gating.
@@ -759,6 +825,62 @@ el.getAuditLog()
759
825
 
760
826
  ---
761
827
 
828
+ ## Injection & CSRF Threat Detection
829
+
830
+ ### Injection detection
831
+
832
+ Every `<secure-input>`, `<secure-textarea>`, and `<secure-password-confirm>` scans the raw field value on every `input` event against these patterns:
833
+
834
+ | Pattern ID | What it catches |
835
+ |------------|-----------------|
836
+ | `script-tag` | `<script` tags |
837
+ | `js-protocol` | `javascript:` URIs |
838
+ | `event-handler` | Inline event attributes (`onclick=`, `onload=`, etc.) |
839
+ | `html-injection` | Injected elements: `<img>`, `<svg>`, `<iframe>`, `<object>`, `<embed>`, `<link>`, `<meta>`, `<base>` |
840
+ | `css-expression` | IE-era `expression()` CSS |
841
+ | `vbscript` | `vbscript:` URIs |
842
+ | `data-uri-html` | `data:text/html` payloads |
843
+ | `template-syntax` | `{{...}}` template injection probes |
844
+
845
+ Only the **first** matching pattern fires an event per input event to avoid flooding. The raw value is **never** included in the event detail.
846
+
847
+ ```js
848
+ document.addEventListener('secure-threat-detected', (e) => {
849
+ const { fieldName, threatType, patternId, tier, timestamp } = e.detail;
850
+ // threatType === 'injection'
851
+ // patternId === 'script-tag' | 'js-protocol' | ...
852
+ myFraudPipeline.report({ fieldName, patternId, tier });
853
+ });
854
+ ```
855
+
856
+ ### CSRF threat detection
857
+
858
+ `<secure-form>` fires `secure-threat-detected` at submission time when the form is `sensitive` or `critical` tier and no CSRF token value is present. This is a defence-in-depth signal — the request is still blocked by missing CSRF validation server-side, but the event lets client-side monitoring react immediately.
859
+
860
+ ```js
861
+ form.addEventListener('secure-threat-detected', (e) => {
862
+ if (e.detail.threatType === 'csrf-token-absent') {
863
+ console.warn('Submission attempted without CSRF token', e.detail);
864
+ }
865
+ });
866
+ ```
867
+
868
+ ### `ThreatDetectedDetail` shape
869
+
870
+ ```ts
871
+ {
872
+ fieldName: string; // name attribute of the originating field
873
+ threatType: 'injection' | 'csrf-token-absent';
874
+ patternId: string; // e.g. 'script-tag', 'csrf-token-absent'
875
+ tier: 'public' | 'authenticated' | 'sensitive' | 'critical';
876
+ timestamp: number; // Unix ms — raw value intentionally absent
877
+ }
878
+ ```
879
+
880
+ All threat signals detected during a session are collected by `<secure-telemetry-provider>` into `threatSignals` on the signed envelope, so the server receives the full picture in a single request.
881
+
882
+ ---
883
+
762
884
  ## Common Attributes
763
885
 
764
886
  All field components support:
@@ -816,6 +938,7 @@ el.blur()
816
938
  | `secure-form-success` | `<secure-form>` | `{ formData, response, telemetry }` |
817
939
  | `secure-card` | `<secure-card>` | `{ name, cardType, last4, expiryMonth, expiryYear, cardholderName, valid, tier }` |
818
940
  | `secure-audit` | all components | `{ event, tier, timestamp, … }` |
941
+ | `secure-threat-detected` | `<secure-input>`, `<secure-textarea>`, `<secure-password-confirm>`, `<secure-form>` | `{ fieldName, threatType, patternId, tier, timestamp }` — injection or CSRF threat detected |
819
942
  | `table-action` | `<secure-table>` | `{ action, row }` |
820
943
 
821
944
  ---
@@ -873,6 +996,7 @@ import 'secure-ui-components/secure-file-upload';
873
996
  import 'secure-ui-components/secure-datetime';
874
997
  import 'secure-ui-components/secure-table';
875
998
  import 'secure-ui-components/secure-card';
999
+ import 'secure-ui-components/secure-password-confirm';
876
1000
  import 'secure-ui-components/secure-telemetry-provider';
877
1001
  ```
878
1002
 
@@ -1 +1 @@
1
- {"version":3,"file":"secure-form.d.ts","sourceRoot":"","sources":["../../../src/components/secure-form/secure-form.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAGH,OAAO,KAAK,EACV,iBAAiB,EAIlB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;GAYG;AACH,qBAAa,UAAW,SAAQ,WAAW;;IACzC,wEAAwE;IACxE,MAAM,CAAC,aAAa,EAAE,OAAO,CAAS;IA6CtC;;;;OAIG;IACH,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAWxC;IAED;;OAEG;;IAMH;;;;;;;;OAQG;IACH,iBAAiB,IAAI,IAAI;IAoqBzB;;;;OAIG;IACH,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAIjC;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAWb;;;;OAIG;IACH,MAAM,IAAI,IAAI;IAOd;;;;OAIG;IACH,IAAI,KAAK,IAAI,OAAO,CAGnB;IAED;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAO5B;;OAEG;IACH,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAqB/F;;OAEG;IACH,IAAI,YAAY,IAAI,iBAAiB,CAEpC;IAED;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAOpC;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAM1D;;OAEG;IACH,cAAc,IAAI;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;CAG3D;AAKD,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"secure-form.d.ts","sourceRoot":"","sources":["../../../src/components/secure-form/secure-form.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAGH,OAAO,KAAK,EACV,iBAAiB,EAKlB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;GAYG;AACH,qBAAa,UAAW,SAAQ,WAAW;;IACzC,wEAAwE;IACxE,MAAM,CAAC,aAAa,EAAE,OAAO,CAAS;IA6CtC;;;;OAIG;IACH,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAWxC;IAED;;OAEG;;IAMH;;;;;;;;OAQG;IACH,iBAAiB,IAAI,IAAI;IAsrBzB;;;;OAIG;IACH,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAIjC;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAWb;;;;OAIG;IACH,MAAM,IAAI,IAAI;IAOd;;;;OAIG;IACH,IAAI,KAAK,IAAI,OAAO,CAGnB;IAED;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAO5B;;OAEG;IACH,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAqB/F;;OAEG;IACH,IAAI,YAAY,IAAI,iBAAiB,CAEpC;IAED;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAOpC;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAM1D;;OAEG;IACH,cAAc,IAAI;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;CAG3D;AAKD,eAAe,UAAU,CAAC"}
@@ -310,6 +310,21 @@ export class SecureForm extends HTMLElement {
310
310
  event.preventDefault();
311
311
  return;
312
312
  }
313
+ // Detect absent CSRF token on sensitive/critical tiers at submission time
314
+ if ((this.#securityTier === SecurityTier.SENSITIVE || this.#securityTier === SecurityTier.CRITICAL) &&
315
+ !this.#csrfInput?.value) {
316
+ this.dispatchEvent(new CustomEvent('secure-threat-detected', {
317
+ detail: {
318
+ fieldName: this.#instanceId,
319
+ threatType: 'csrf-token-absent',
320
+ patternId: 'csrf-token-absent',
321
+ tier: this.#securityTier,
322
+ timestamp: Date.now(),
323
+ },
324
+ bubbles: true,
325
+ composed: true,
326
+ }));
327
+ }
313
328
  // Check rate limit
314
329
  const rateLimitCheck = this.checkRateLimit();
315
330
  if (!rateLimitCheck.allowed) {
@@ -1 +1 @@
1
- {"version":3,"file":"secure-form.js","sourceRoot":"","sources":["../../../src/components/secure-form/secure-form.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"secure-form.js","sourceRoot":"","sources":["../../../src/components/secure-form/secure-form.ts"],"names":[],"mappings":"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"}
@@ -121,11 +121,77 @@ label {
121
121
 
122
122
  @media (prefers-reduced-motion: reduce) {
123
123
  .input-field,
124
- .error-container {
124
+ .error-container,
125
+ .threat-container {
125
126
  transition: none !important;
126
127
  }
127
128
  }
128
129
 
130
+ /* Threat Feedback Container */
131
+ .threat-container {
132
+ margin-top: var(--secure-ui-form-error-margin-top);
133
+ font-size: var(--secure-ui-error-font-size);
134
+ color: var(--secure-ui-color-warning);
135
+ line-height: var(--secure-ui-line-height-normal);
136
+ overflow: hidden;
137
+ max-height: 40px;
138
+ opacity: 1;
139
+ transform: translateY(0);
140
+ transition: all 0.5s ease-in-out;
141
+ display: flex;
142
+ align-items: center;
143
+ gap: var(--secure-ui-space-1, 4px);
144
+ flex-wrap: wrap;
145
+ }
146
+
147
+ .threat-container.hidden {
148
+ max-height: 0;
149
+ opacity: 0;
150
+ transform: translateY(-4px);
151
+ margin-top: 0;
152
+ transition: all 0.2s ease-in-out;
153
+ }
154
+
155
+ .threat-message {
156
+ flex: 1;
157
+ min-width: 0;
158
+ }
159
+
160
+ .threat-badge {
161
+ display: inline-block;
162
+ padding: var(--secure-ui-badge-padding);
163
+ font-size: var(--secure-ui-badge-font-size);
164
+ font-weight: var(--secure-ui-font-weight-semibold);
165
+ border-radius: var(--secure-ui-badge-border-radius);
166
+ background-color: color-mix(in srgb, var(--secure-ui-color-warning) 12%, transparent);
167
+ color: var(--secure-ui-color-warning);
168
+ border: var(--secure-ui-border-width-thin) solid currentColor;
169
+ font-family: var(--secure-ui-font-family-mono, monospace);
170
+ white-space: nowrap;
171
+ }
172
+
173
+ .threat-tier {
174
+ display: inline-block;
175
+ padding: var(--secure-ui-badge-padding);
176
+ font-size: var(--secure-ui-badge-font-size);
177
+ font-weight: var(--secure-ui-font-weight-semibold);
178
+ border-radius: var(--secure-ui-badge-border-radius);
179
+ background-color: var(--secure-ui-color-bg-tertiary);
180
+ color: var(--secure-ui-color-text-secondary);
181
+ border: var(--secure-ui-border-width-thin) solid var(--secure-ui-color-border);
182
+ text-transform: uppercase;
183
+ white-space: nowrap;
184
+ }
185
+
186
+ /* Threat state on the input field */
187
+ .input-field.threat {
188
+ border-color: var(--secure-ui-color-warning) !important;
189
+ }
190
+
191
+ .input-field.threat:focus {
192
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--secure-ui-color-warning) 25%, transparent);
193
+ }
194
+
129
195
  /* Security Tier-Specific Styles */
130
196
  /* :host([security-tier="public"]) .input-field {
131
197
  border-color: var(--secure-ui-tier-public);
@@ -29,6 +29,7 @@
29
29
  * @license MIT
30
30
  */
31
31
  import { SecureBaseComponent } from '../../core/base-component.js';
32
+ import type { SecurityTierValue } from '../../core/types.js';
32
33
  /**
33
34
  * Secure Input Web Component
34
35
  *
@@ -105,6 +106,19 @@ export declare class SecureInput extends SecureBaseComponent {
105
106
  * @public
106
107
  */
107
108
  blur(): void;
109
+ /**
110
+ * Show inline threat feedback inside the component's shadow DOM.
111
+ * Called by the base class when a threat is detected and threat-feedback is set.
112
+ * Uses a separate container from validation errors so #clearErrors() does not
113
+ * clobber an active threat message.
114
+ * @protected
115
+ */
116
+ protected showThreatFeedback(patternId: string, tier: SecurityTierValue): void;
117
+ /**
118
+ * Clear the threat feedback container.
119
+ * @protected
120
+ */
121
+ protected clearThreatFeedback(): void;
108
122
  /**
109
123
  * Cleanup on disconnect
110
124
  */
@@ -1 +1 @@
1
- {"version":3,"file":"secure-input.d.ts","sourceRoot":"","sources":["../../../src/components/secure-input/secure-input.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGnE;;;;;;;;GAQG;AACH,qBAAa,WAAY,SAAQ,mBAAmB;;IA2ClD;;;;OAIG;IACH,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAcxC;IAED;;OAEG;;IAKH;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,IAAI,gBAAgB,GAAG,WAAW,GAAG,IAAI;IAioBzD;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAkBtG;;;;;;;OAOG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;;OAIG;IACH,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;IAED;;;;OAIG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;OAIG;IACH,IAAI,KAAK,IAAI,OAAO,CAyDnB;IAED;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAMb;;;;OAIG;IACH,IAAI,IAAI,IAAI;IAMZ;;OAEG;IACH,oBAAoB,IAAI,IAAI;CAS7B;AAKD,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"secure-input.d.ts","sourceRoot":"","sources":["../../../src/components/secure-input/secure-input.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;;;;;;GAQG;AACH,qBAAa,WAAY,SAAQ,mBAAmB;;IAkDlD;;;;OAIG;IACH,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAcxC;IAED;;OAEG;;IAKH;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,IAAI,gBAAgB,GAAG,WAAW,GAAG,IAAI;IA6oBzD;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAkBtG;;;;;;;OAOG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;;OAIG;IACH,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;IAED;;;;OAIG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;OAIG;IACH,IAAI,KAAK,IAAI,OAAO,CAyDnB;IAED;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAMb;;;;OAIG;IACH,IAAI,IAAI,IAAI;IAMZ;;;;;;OAMG;cACgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI;IA8BvF;;;OAGG;cACgB,mBAAmB,IAAI,IAAI;IAY9C;;OAEG;IACH,oBAAoB,IAAI,IAAI;CAS7B;AAKD,eAAe,WAAW,CAAC"}
@@ -55,6 +55,12 @@ export class SecureInput extends SecureBaseComponent {
55
55
  * @private
56
56
  */
57
57
  #errorContainer = null;
58
+ /**
59
+ * Threat feedback container — separate from validation errors so
60
+ * #clearErrors() never clobbers an active threat message.
61
+ * @private
62
+ */
63
+ #threatContainer = null;
58
64
  /**
59
65
  * The actual unmasked value
60
66
  * @private
@@ -147,6 +153,15 @@ export class SecureInput extends SecureBaseComponent {
147
153
  this.#errorContainer.setAttribute('part', 'error');
148
154
  this.#errorContainer.id = `${this.#instanceId}-error`;
149
155
  container.appendChild(this.#errorContainer);
156
+ // Threat feedback container — only rendered visibly when threat-feedback attribute
157
+ // is present and detectInjection() fires. Kept separate from #errorContainer so
158
+ // #clearErrors() (called on every input event) never clobbers a threat message.
159
+ this.#threatContainer = document.createElement('div');
160
+ this.#threatContainer.className = 'threat-container hidden';
161
+ this.#threatContainer.setAttribute('role', 'alert');
162
+ this.#threatContainer.setAttribute('part', 'threat');
163
+ this.#threatContainer.id = `${this.#instanceId}-threat`;
164
+ container.appendChild(this.#threatContainer);
150
165
  // CRITICAL: Create hidden input in light DOM for native form submission
151
166
  // The actual input is in Shadow DOM and can't participate in form submission
152
167
  this.#createHiddenInputForForm();
@@ -432,6 +447,7 @@ export class SecureInput extends SecureBaseComponent {
432
447
  // For non-masked inputs, just read the value normally
433
448
  this.#actualValue = this.#inputElement.value;
434
449
  }
450
+ this.detectInjection(this.#actualValue, this.#inputElement.name);
435
451
  // Clear previous errors on input (improve UX)
436
452
  this.#clearErrors();
437
453
  // Sync hidden input for form submission
@@ -815,6 +831,53 @@ export class SecureInput extends SecureBaseComponent {
815
831
  this.#inputElement.blur();
816
832
  }
817
833
  }
834
+ /**
835
+ * Show inline threat feedback inside the component's shadow DOM.
836
+ * Called by the base class when a threat is detected and threat-feedback is set.
837
+ * Uses a separate container from validation errors so #clearErrors() does not
838
+ * clobber an active threat message.
839
+ * @protected
840
+ */
841
+ showThreatFeedback(patternId, tier) {
842
+ if (!this.#threatContainer || !this.#inputElement)
843
+ return;
844
+ // Build content with DOM methods — CSP-safe, no innerHTML
845
+ this.#threatContainer.textContent = '';
846
+ const msg = document.createElement('span');
847
+ msg.className = 'threat-message';
848
+ msg.textContent = this.getThreatLabel(patternId);
849
+ const patternBadge = document.createElement('span');
850
+ patternBadge.className = 'threat-badge';
851
+ patternBadge.textContent = patternId;
852
+ const tierBadge = document.createElement('span');
853
+ tierBadge.className = `threat-tier threat-tier--${tier}`;
854
+ tierBadge.textContent = tier;
855
+ this.#threatContainer.appendChild(msg);
856
+ this.#threatContainer.appendChild(patternBadge);
857
+ this.#threatContainer.appendChild(tierBadge);
858
+ // Force reflow so the browser registers the hidden state before removing it,
859
+ // ensuring the CSS transition fires correctly.
860
+ void this.#threatContainer.offsetHeight;
861
+ this.#threatContainer.classList.remove('hidden');
862
+ this.#inputElement.classList.add('threat');
863
+ this.#inputElement.setAttribute('aria-invalid', 'true');
864
+ }
865
+ /**
866
+ * Clear the threat feedback container.
867
+ * @protected
868
+ */
869
+ clearThreatFeedback() {
870
+ if (!this.#threatContainer || !this.#inputElement)
871
+ return;
872
+ this.#threatContainer.classList.add('hidden');
873
+ this.#threatContainer.addEventListener('transitionend', () => {
874
+ if (this.#threatContainer.classList.contains('hidden')) {
875
+ this.#threatContainer.textContent = '';
876
+ }
877
+ }, { once: true });
878
+ this.#inputElement.classList.remove('threat');
879
+ this.#inputElement.removeAttribute('aria-invalid');
880
+ }
818
881
  /**
819
882
  * Cleanup on disconnect
820
883
  */