DOM Access

Input Fields Invisible to the DOM

Standard inputs store plaintext in the DOM. Any JavaScript can read it with querySelector. SmartField stores data in a WeakMap inside a closed Shadow DOM. innerHTML, textContent, and querySelector all return empty or null.

The Attack

When dom access targets a standard HTML input, the attacker can read the plaintext value directly from the DOM:

// DOM Access attack: document.querySelector('input').value // "SensitiveData123" ← stolen

The Protection

With SmartField, the same attack returns encrypted data:

// Same attack against SmartField: document.querySelector('smart-field').value // "eyJ2IjoxLCJpdiI6..." ← AES-256-GCM encrypted

The attacker gets 600+ characters of encrypted gibberish. Useless without the server's RSA-2048 private key.

13 Security Layers

SmartField does not rely on any single defense. It combines 13 independent security layers:

Implementation

<!-- 2 lines. That's it. --> <script src="https://cdn.smartfield.dev/v1/smartfield.js"></script> <smart-field type="password" encrypt-key="/api/sf-key"></smart-field>

Frequently Asked Questions

How does SmartField protect against dom access?+
Standard inputs store plaintext in the DOM. Any JavaScript can read it with querySelector. SmartField stores data in a WeakMap inside a closed Shadow DOM. innerHTML, textContent, and querySelector all return empty or null.
Does this require changes to my server?+
Minimal. Install our server SDK (Node.js, Python, Java, Go, PHP, or Ruby). Call sf.decrypt() on the encrypted payload. Your existing authentication and business logic stays the same.
Does it work with React, Vue, and Angular?+
Yes. SmartField is a standard Web Component. It works with any framework or no framework at all.

Related Pages

Try Live Demo