<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://consumerrights.wiki/index.php?action=history&amp;feed=atom&amp;title=CSS_tracking</id>
	<title>CSS tracking - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://consumerrights.wiki/index.php?action=history&amp;feed=atom&amp;title=CSS_tracking"/>
	<link rel="alternate" type="text/html" href="https://consumerrights.wiki/index.php?title=CSS_tracking&amp;action=history"/>
	<updated>2026-04-29T00:20:34Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://consumerrights.wiki/index.php?title=CSS_tracking&amp;diff=52373&amp;oldid=prev</id>
		<title>Rudxain at 21:07, 26 April 2026</title>
		<link rel="alternate" type="text/html" href="https://consumerrights.wiki/index.php?title=CSS_tracking&amp;diff=52373&amp;oldid=prev"/>
		<updated>2026-04-26T21:07:33Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:07, 26 April 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l6&quot;&gt;Line 6:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CSS can declare that certain resources/assets be used &amp;#039;&amp;#039;if&amp;#039;&amp;#039; certain conditions are met.&amp;lt;ref&amp;gt;https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Media_queries&amp;lt;/ref&amp;gt; Since browsers implement [[wikipedia:Lazy_loading|lazy-loading]], this means that assets will only be requested &amp;#039;&amp;#039;when&amp;#039;&amp;#039; the conditions are met. This effectively allows [[wikipedia:Ping_(networking_utility)|pinging]] arbitrary URLs when a client-side event happens. Instead of referencing a single endpoint for all events, each event can be associated to a different URL, allowing the tracking-&amp;quot;[https://www.gnu.org/philosophy/who-does-that-server-really-serve.html server]&amp;quot; to gather more data about user behavior.&amp;lt;ref&amp;gt;https://www.mike-gualtieri.com/posts/stealing-data-with-css-attack-and-defense&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://portswigger.net/research/inline-style-exfiltration&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CSS can declare that certain resources/assets be used &amp;#039;&amp;#039;if&amp;#039;&amp;#039; certain conditions are met.&amp;lt;ref&amp;gt;https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Media_queries&amp;lt;/ref&amp;gt; Since browsers implement [[wikipedia:Lazy_loading|lazy-loading]], this means that assets will only be requested &amp;#039;&amp;#039;when&amp;#039;&amp;#039; the conditions are met. This effectively allows [[wikipedia:Ping_(networking_utility)|pinging]] arbitrary URLs when a client-side event happens. Instead of referencing a single endpoint for all events, each event can be associated to a different URL, allowing the tracking-&amp;quot;[https://www.gnu.org/philosophy/who-does-that-server-really-serve.html server]&amp;quot; to gather more data about user behavior.&amp;lt;ref&amp;gt;https://www.mike-gualtieri.com/posts/stealing-data-with-css-attack-and-defense&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://portswigger.net/research/inline-style-exfiltration&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Traditionally, CSS tracking was (and still is) implemented as a limited [[Fingerprinting|finger printer]], typically by enumerating installed fonts and checking window dimensions.{{Citation needed}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Traditionally, CSS tracking was (and still is) implemented as a limited [[Fingerprinting|finger&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-&lt;/ins&gt;printer]], typically by enumerating installed fonts and checking window dimensions.{{Citation needed}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Either way, the attack has limitations, as [[wikipedia:Cache_(computing)|caching]] avoids (no guarantee) repeated requests from happening.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Either way, the attack has limitations, as [[wikipedia:Cache_(computing)|caching]] avoids (no guarantee) repeated requests from happening.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Why it is a problem==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Why it is a problem==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Though CSS is widely believed to be &quot;just a declarative styling system&quot; with no practical compute power, it is actually a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;virtually &lt;/del&gt;[https://gavinhoward.com/2024/03/what-computers-cannot-do-the-consequences-of-turing-completeness/#mathematical-vs-practical Turing-complete] programming language,&amp;lt;ref&amp;gt;https://lyra.horse/x86css/&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lyra.horse/css-clicker/&amp;lt;/ref&amp;gt; a fact which may leave even the most privacy-minded users vulnerable to tracking.{{Citation needed}} This mode of attack breaks the common belief that [[wikipedia:HTML|HTML]] and CSS can only be used to make static/passive documents, whilst [[JavaScript]] represents the real &quot;threat&quot; to be countered through disabling.{{Citation needed}}&amp;lt;!-- Chromium disables HTML-based lazy-loading when JS is disabled, for privacy reasons. But it doesn&#039;t disable lazy-load for CSS --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Though CSS is widely believed to be &quot;just a declarative styling system&quot; with no practical compute power, it is actually a [https://gavinhoward.com/2024/03/what-computers-cannot-do-the-consequences-of-turing-completeness/#mathematical-vs-practical &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;virtually &lt;/ins&gt;Turing-complete] programming language,&amp;lt;ref&amp;gt;https://lyra.horse/x86css/&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lyra.horse/css-clicker/&amp;lt;/ref&amp;gt; a fact which may leave even the most privacy-minded users vulnerable to tracking.{{Citation needed}} This mode of attack breaks the common belief that [[wikipedia:HTML|HTML]] and CSS can only be used to make static/passive documents, whilst [[JavaScript]] represents the real &quot;threat&quot; to be countered through disabling.{{Citation needed}}&amp;lt;!-- Chromium disables HTML-based lazy-loading when JS is disabled, for privacy reasons. But it doesn&#039;t disable lazy-load for CSS --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Examples==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Examples==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff:1.41:old-52367:rev-52373:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Rudxain</name></author>
	</entry>
	<entry>
		<id>https://consumerrights.wiki/index.php?title=CSS_tracking&amp;diff=52367&amp;oldid=prev</id>
		<title>IWillRememberMyPassword: /* Why it is a problem */</title>
		<link rel="alternate" type="text/html" href="https://consumerrights.wiki/index.php?title=CSS_tracking&amp;diff=52367&amp;oldid=prev"/>
		<updated>2026-04-26T17:01:53Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Why it is a problem&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:01, 26 April 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Why it is a problem==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Why it is a problem==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Though CSS is widely believed to be &quot;just a declarative styling &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;language&lt;/del&gt;&quot; with no practical compute power, it is actually a virtually [https://gavinhoward.com/2024/03/what-computers-cannot-do-the-consequences-of-turing-completeness/#mathematical-vs-practical Turing-complete] language,&amp;lt;ref&amp;gt;https://lyra.horse/x86css/&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lyra.horse/css-clicker/&amp;lt;/ref&amp;gt; a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;reality &lt;/del&gt;which may leave even the most privacy-minded users vulnerable to tracking.{{Citation needed}} This mode of attack breaks the common belief that [[wikipedia:HTML|HTML]] and CSS can only be used to make static/passive documents, whilst [[JavaScript]] represents the real &quot;threat&quot; to be countered through disabling.{{Citation needed}}&amp;lt;!-- Chromium disables HTML-based lazy-loading when JS is disabled, for privacy reasons. But it doesn&#039;t disable lazy-load for CSS --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Though CSS is widely believed to be &quot;just a declarative styling &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;system&lt;/ins&gt;&quot; with no practical compute power, it is actually a virtually [https://gavinhoward.com/2024/03/what-computers-cannot-do-the-consequences-of-turing-completeness/#mathematical-vs-practical Turing-complete] &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;programming &lt;/ins&gt;language,&amp;lt;ref&amp;gt;https://lyra.horse/x86css/&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lyra.horse/css-clicker/&amp;lt;/ref&amp;gt; a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;fact &lt;/ins&gt;which may leave even the most privacy-minded users vulnerable to tracking.{{Citation needed}} This mode of attack breaks the common belief that [[wikipedia:HTML|HTML]] and CSS can only be used to make static/passive documents, whilst [[JavaScript]] represents the real &quot;threat&quot; to be countered through disabling.{{Citation needed}}&amp;lt;!-- Chromium disables HTML-based lazy-loading when JS is disabled, for privacy reasons. But it doesn&#039;t disable lazy-load for CSS --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Examples==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Examples==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff:1.41:old-52363:rev-52367:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>IWillRememberMyPassword</name></author>
	</entry>
	<entry>
		<id>https://consumerrights.wiki/index.php?title=CSS_tracking&amp;diff=52363&amp;oldid=prev</id>
		<title>IWillRememberMyPassword: Flow of reading, tone moderation to neutrality (see Neutral POV / Editorial guidleines), etc. See Discussion page for more.</title>
		<link rel="alternate" type="text/html" href="https://consumerrights.wiki/index.php?title=CSS_tracking&amp;diff=52363&amp;oldid=prev"/>
		<updated>2026-04-26T16:49:23Z</updated>

		<summary type="html">&lt;p&gt;Flow of reading, tone moderation to neutrality (see Neutral POV / Editorial guidleines), etc. See Discussion page for more.&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:49, 26 April 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{StubNotice}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{StubNotice}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;[[wikipedia:CSS|CSS]]-based tracking&#039;&#039;&#039; and &#039;&#039;&#039;[[wikipedia:CSS_fingerprinting|CSS fingerprinting]]&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;,&lt;/del&gt;&#039;&#039;&#039; consist &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;on &lt;/del&gt;abusing the semantics of CSS, in order to trick web-browsers to send data to servers.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;[[wikipedia:CSS|CSS]]-based tracking&#039;&#039;&#039; and &#039;&#039;&#039;[[wikipedia:CSS_fingerprinting|CSS fingerprinting]]&#039;&#039;&#039; consist &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;of &lt;/ins&gt;abusing the semantics of CSS&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, a styling language used to present virtually all web-pages&lt;/ins&gt;, in order to trick web-browsers to send data to servers.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==How it works==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==How it works==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CSS can declare that certain resources/assets be used &amp;#039;&amp;#039;if&amp;#039;&amp;#039; certain conditions are met.&amp;lt;ref&amp;gt;https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Media_queries&amp;lt;/ref&amp;gt; Since browsers implement [[wikipedia:Lazy_loading|lazy-loading]], this means that assets will only be requested &amp;#039;&amp;#039;when&amp;#039;&amp;#039; the conditions are met. This effectively allows [[wikipedia:Ping_(networking_utility)|pinging]] arbitrary URLs when a client-side event happens. Instead of referencing a single endpoint for all events, each event can be associated to a different URL, allowing the tracking-&amp;quot;[https://www.gnu.org/philosophy/who-does-that-server-really-serve.html server]&amp;quot; to gather more data about user behavior.&amp;lt;ref&amp;gt;https://www.mike-gualtieri.com/posts/stealing-data-with-css-attack-and-defense&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://portswigger.net/research/inline-style-exfiltration&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CSS can declare that certain resources/assets be used &amp;#039;&amp;#039;if&amp;#039;&amp;#039; certain conditions are met.&amp;lt;ref&amp;gt;https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Media_queries&amp;lt;/ref&amp;gt; Since browsers implement [[wikipedia:Lazy_loading|lazy-loading]], this means that assets will only be requested &amp;#039;&amp;#039;when&amp;#039;&amp;#039; the conditions are met. This effectively allows [[wikipedia:Ping_(networking_utility)|pinging]] arbitrary URLs when a client-side event happens. Instead of referencing a single endpoint for all events, each event can be associated to a different URL, allowing the tracking-&amp;quot;[https://www.gnu.org/philosophy/who-does-that-server-really-serve.html server]&amp;quot; to gather more data about user behavior.&amp;lt;ref&amp;gt;https://www.mike-gualtieri.com/posts/stealing-data-with-css-attack-and-defense&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://portswigger.net/research/inline-style-exfiltration&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Traditionally, CSS tracking was (and still is) implemented as a limited [[Fingerprinting|&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;fingerprinter&lt;/del&gt;]], typically by enumerating installed fonts and checking window dimensions.{{Citation needed}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Traditionally, CSS tracking was (and still is) implemented as a limited [[Fingerprinting|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;finger printer&lt;/ins&gt;]], typically by enumerating installed fonts and checking window dimensions.{{Citation needed}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Either way, the attack has limitations, as [[wikipedia:Cache_(computing)|caching]] avoids (no guarantee) repeated requests from happening.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Either way, the attack has limitations, as [[wikipedia:Cache_(computing)|caching]] avoids (no guarantee) repeated requests from happening.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Why it is a problem==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Why it is a problem==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;This is an insidious practice, as &lt;/del&gt;CSS is widely believed to be &quot;just a declarative styling language&quot;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;even though &lt;/del&gt;it&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;s &lt;/del&gt;[https://gavinhoward.com/2024/03/what-computers-cannot-do-the-consequences-of-turing-completeness/#mathematical-vs-practical &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;practically &lt;/del&gt;Turing-complete]&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.&lt;/del&gt;&amp;lt;ref&amp;gt;https://lyra.horse/x86css/&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lyra.horse/css-clicker/&amp;lt;/ref&amp;gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Even &lt;/del&gt;privacy-minded users &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;have this misconception, which makes them equally &lt;/del&gt;vulnerable to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;this class of &lt;/del&gt;tracking.{{Citation needed}} &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Most people believe that simply disabling [[JavaScript|Javascript]] is enough. &lt;/del&gt;This attack breaks the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;expectation &lt;/del&gt;that [[wikipedia:HTML|HTML]] and CSS can only be used to make static/passive documents.&amp;lt;!-- Chromium disables HTML-based lazy-loading when JS is disabled, for privacy reasons. But it doesn&#039;t disable lazy-load for CSS --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Though &lt;/ins&gt;CSS is widely believed to be &quot;just a declarative styling language&quot; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;with no practical compute power&lt;/ins&gt;, it &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is actually a virtually &lt;/ins&gt;[https://gavinhoward.com/2024/03/what-computers-cannot-do-the-consequences-of-turing-completeness/#mathematical-vs-practical Turing-complete] &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;language,&lt;/ins&gt;&amp;lt;ref&amp;gt;https://lyra.horse/x86css/&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lyra.horse/css-clicker/&amp;lt;/ref&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a reality which may leave even the most &lt;/ins&gt;privacy-minded users vulnerable to tracking.{{Citation needed}} This &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mode of &lt;/ins&gt;attack breaks the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;common belief &lt;/ins&gt;that [[wikipedia:HTML|HTML]] and CSS can only be used to make static/passive documents&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, whilst [[JavaScript]] represents the real &quot;threat&quot; to be countered through disabling&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Citation needed}}&lt;/ins&gt;&amp;lt;!-- Chromium disables HTML-based lazy-loading when JS is disabled, for privacy reasons. But it doesn&#039;t disable lazy-load for CSS --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Examples==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Examples==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff:1.41:old-52335:rev-52363:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>IWillRememberMyPassword</name></author>
	</entry>
	<entry>
		<id>https://consumerrights.wiki/index.php?title=CSS_tracking&amp;diff=52335&amp;oldid=prev</id>
		<title>Rudxain: links (inter &amp; ext)</title>
		<link rel="alternate" type="text/html" href="https://consumerrights.wiki/index.php?title=CSS_tracking&amp;diff=52335&amp;oldid=prev"/>
		<updated>2026-04-26T02:38:29Z</updated>

		<summary type="html">&lt;p&gt;links (inter &amp;amp; ext)&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 02:38, 26 April 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l4&quot;&gt;Line 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==How it works==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==How it works==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CSS can declare that certain resources/assets be used &#039;&#039;if&#039;&#039; certain conditions are met.&amp;lt;ref&amp;gt;https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Media_queries&amp;lt;/ref&amp;gt; Since browsers implement [[wikipedia:Lazy_loading|lazy-loading]], this means that assets will only be requested &#039;&#039;when&#039;&#039; the conditions are met. This effectively allows [[wikipedia:Ping_(networking_utility)|pinging]] arbitrary URLs when a client-side event happens. Instead of referencing a single endpoint for all events, each event can be associated to a different URL, allowing the tracking-&quot;server&quot; to gather more data about user behavior.&amp;lt;ref&amp;gt;https://www.mike-gualtieri.com/posts/stealing-data-with-css-attack-and-defense&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://portswigger.net/research/inline-style-exfiltration&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CSS can declare that certain resources/assets be used &#039;&#039;if&#039;&#039; certain conditions are met.&amp;lt;ref&amp;gt;https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Media_queries&amp;lt;/ref&amp;gt; Since browsers implement [[wikipedia:Lazy_loading|lazy-loading]], this means that assets will only be requested &#039;&#039;when&#039;&#039; the conditions are met. This effectively allows [[wikipedia:Ping_(networking_utility)|pinging]] arbitrary URLs when a client-side event happens. Instead of referencing a single endpoint for all events, each event can be associated to a different URL, allowing the tracking-&quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[https://www.gnu.org/philosophy/who-does-that-&lt;/ins&gt;server&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-really-serve.html server]&lt;/ins&gt;&quot; to gather more data about user behavior.&amp;lt;ref&amp;gt;https://www.mike-gualtieri.com/posts/stealing-data-with-css-attack-and-defense&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://portswigger.net/research/inline-style-exfiltration&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Traditionally, CSS tracking was (and still is) implemented as a limited [[Fingerprinting|fingerprinter]], typically by enumerating installed fonts and checking window dimensions.{{Citation needed}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Traditionally, CSS tracking was (and still is) implemented as a limited [[Fingerprinting|fingerprinter]], typically by enumerating installed fonts and checking window dimensions.{{Citation needed}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Why it is a problem==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Why it is a problem==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This is an insidious practice, as CSS is widely believed to be &quot;just a declarative styling language&quot;, even though it&#039;s [https://gavinhoward.com/2024/03/what-computers-cannot-do-the-consequences-of-turing-completeness/#mathematical-vs-practical practically Turing-complete].&amp;lt;ref&amp;gt;https://lyra.horse/x86css/&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lyra.horse/css-clicker/&amp;lt;/ref&amp;gt; Even privacy-minded users have this misconception, which makes them equally vulnerable to this class of tracking.{{Citation needed}} Most people believe that simply disabling [[JavaScript|Javascript]] is enough. This attack breaks the expectation that HTML and CSS can only be used to make static/passive documents.&amp;lt;!-- Chromium disables HTML-based lazy-loading when JS is disabled, for privacy reasons. But it doesn&#039;t disable lazy-load for CSS --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This is an insidious practice, as CSS is widely believed to be &quot;just a declarative styling language&quot;, even though it&#039;s [https://gavinhoward.com/2024/03/what-computers-cannot-do-the-consequences-of-turing-completeness/#mathematical-vs-practical practically Turing-complete].&amp;lt;ref&amp;gt;https://lyra.horse/x86css/&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lyra.horse/css-clicker/&amp;lt;/ref&amp;gt; Even privacy-minded users have this misconception, which makes them equally vulnerable to this class of tracking.{{Citation needed}} Most people believe that simply disabling [[JavaScript|Javascript]] is enough. This attack breaks the expectation that &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[wikipedia:&lt;/ins&gt;HTML&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|HTML]] &lt;/ins&gt;and CSS can only be used to make static/passive documents.&amp;lt;!-- Chromium disables HTML-based lazy-loading when JS is disabled, for privacy reasons. But it doesn&#039;t disable lazy-load for CSS --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Examples==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Examples==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff:1.41:old-52314:rev-52335:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Rudxain</name></author>
	</entry>
	<entry>
		<id>https://consumerrights.wiki/index.php?title=CSS_tracking&amp;diff=52314&amp;oldid=prev</id>
		<title>Rudxain: Created page with &quot;{{StubNotice}}  &#039;&#039;&#039;CSS-based tracking&#039;&#039;&#039; and &#039;&#039;&#039;CSS fingerprinting,&#039;&#039;&#039; consist on abusing the semantics of CSS, in order to trick web-browsers to send data to servers.  ==How it works== CSS can declare that certain resources/assets be used &#039;&#039;if&#039;&#039; certain conditions are met.&lt;ref&gt;https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Media_queries&lt;/ref&gt; Since browsers implement lazy-loading, thi...&quot;</title>
		<link rel="alternate" type="text/html" href="https://consumerrights.wiki/index.php?title=CSS_tracking&amp;diff=52314&amp;oldid=prev"/>
		<updated>2026-04-26T01:05:13Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{StubNotice}}  &amp;#039;&amp;#039;&amp;#039;&lt;a href=&quot;https://en.wikipedia.org/wiki/CSS&quot; class=&quot;extiw&quot; title=&quot;wikipedia:CSS&quot;&gt;CSS&lt;/a&gt;-based tracking&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;&lt;a href=&quot;https://en.wikipedia.org/wiki/CSS_fingerprinting&quot; class=&quot;extiw&quot; title=&quot;wikipedia:CSS fingerprinting&quot;&gt;CSS fingerprinting&lt;/a&gt;,&amp;#039;&amp;#039;&amp;#039; consist on abusing the semantics of CSS, in order to trick web-browsers to send data to servers.  ==How it works== CSS can declare that certain resources/assets be used &amp;#039;&amp;#039;if&amp;#039;&amp;#039; certain conditions are met.&amp;lt;ref&amp;gt;https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Media_queries&amp;lt;/ref&amp;gt; Since browsers implement &lt;a href=&quot;https://en.wikipedia.org/wiki/Lazy_loading&quot; class=&quot;extiw&quot; title=&quot;wikipedia:Lazy loading&quot;&gt;lazy-loading&lt;/a&gt;, thi...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{StubNotice}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[wikipedia:CSS|CSS]]-based tracking&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;[[wikipedia:CSS_fingerprinting|CSS fingerprinting]],&amp;#039;&amp;#039;&amp;#039; consist on abusing the semantics of CSS, in order to trick web-browsers to send data to servers.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
CSS can declare that certain resources/assets be used &amp;#039;&amp;#039;if&amp;#039;&amp;#039; certain conditions are met.&amp;lt;ref&amp;gt;https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Media_queries&amp;lt;/ref&amp;gt; Since browsers implement [[wikipedia:Lazy_loading|lazy-loading]], this means that assets will only be requested &amp;#039;&amp;#039;when&amp;#039;&amp;#039; the conditions are met. This effectively allows [[wikipedia:Ping_(networking_utility)|pinging]] arbitrary URLs when a client-side event happens. Instead of referencing a single endpoint for all events, each event can be associated to a different URL, allowing the tracking-&amp;quot;server&amp;quot; to gather more data about user behavior.&amp;lt;ref&amp;gt;https://www.mike-gualtieri.com/posts/stealing-data-with-css-attack-and-defense&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://portswigger.net/research/inline-style-exfiltration&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Traditionally, CSS tracking was (and still is) implemented as a limited [[Fingerprinting|fingerprinter]], typically by enumerating installed fonts and checking window dimensions.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
Either way, the attack has limitations, as [[wikipedia:Cache_(computing)|caching]] avoids (no guarantee) repeated requests from happening.&lt;br /&gt;
&lt;br /&gt;
==Why it is a problem==&lt;br /&gt;
This is an insidious practice, as CSS is widely believed to be &amp;quot;just a declarative styling language&amp;quot;, even though it&amp;#039;s [https://gavinhoward.com/2024/03/what-computers-cannot-do-the-consequences-of-turing-completeness/#mathematical-vs-practical practically Turing-complete].&amp;lt;ref&amp;gt;https://lyra.horse/x86css/&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lyra.horse/css-clicker/&amp;lt;/ref&amp;gt; Even privacy-minded users have this misconception, which makes them equally vulnerable to this class of tracking.{{Citation needed}} Most people believe that simply disabling [[JavaScript|Javascript]] is enough. This attack breaks the expectation that HTML and CSS can only be used to make static/passive documents.&amp;lt;!-- Chromium disables HTML-based lazy-loading when JS is disabled, for privacy reasons. But it doesn&amp;#039;t disable lazy-load for CSS --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
{{Ph-T-E}}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
[[Category:Theme]]&lt;/div&gt;</summary>
		<author><name>Rudxain</name></author>
	</entry>
</feed>