Skip to content

[css-pseudo-4] Preventing User Dictionary Leaks via ::spelling-error and ::grammar-error Performance Impacts#13399

Open
arichiv wants to merge 2 commits intow3c:mainfrom
arichiv:patch-1
Open

[css-pseudo-4] Preventing User Dictionary Leaks via ::spelling-error and ::grammar-error Performance Impacts#13399
arichiv wants to merge 2 commits intow3c:mainfrom
arichiv:patch-1

Conversation

@arichiv
Copy link
Member

@arichiv arichiv commented Jan 26, 2026

This proposal adds a new security concern to the section on ::spelling-error and ::grammar-error.

Although direct indicators of the ::spelling-error and ::grammar-error cannot be extracted, it’s possible to extract indirect information from browsers without rate limits on the application of these hints. In Chrome and Firefox, it’s possible to have an autofocused text area cycle programmatically through a series of misspelled words, and for the site to monitor indicators of rendering performance to notice when hints are applied. This allows sites (or their third-party embeds) to detect which words are or aren’t in the user’s dictionary, which could leak sensitive information stored there (for example, their contacts’ names). Safari already has rate limits in place which only check for and apply hints once per user interaction with the text field (e.g., a key input or click).

For details see: https://explainers-by-googlers.github.io/user-dictionary-leaks/

This just shipped for Chrome, and has been in Safari for quite some time.

w3ctag/design-reviews#1148
WebKit/standards-positions#546
mozilla/standards-positions#1294

@arichiv arichiv changed the title [css-spec-shortname-1] Preventing User Dictionary Leaks via ::spelling-error and ::grammar-error Performance Impacts [css-pseudo-4] Preventing User Dictionary Leaks via ::spelling-error and ::grammar-error Performance Impacts Jan 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant