Issues with Canvas Poisoning
Forum rules
Please keep everything here strictly on-topic.
This board is meant for Pale Moon source code development related subjects only like code snippets, patches, specific bugs, git, the repositories, etc.
This is not for tech support! Please do not post tech support questions in the "Development" board!
Please make sure not to use this board for support questions. Please post issues with specific websites, extensions, etc. in the relevant boards for those topics.
Please keep things on-topic as this forum will be used for reference for Pale Moon development. Expect topics that aren't relevant as such to be moved or deleted.
Please keep everything here strictly on-topic.
This board is meant for Pale Moon source code development related subjects only like code snippets, patches, specific bugs, git, the repositories, etc.
This is not for tech support! Please do not post tech support questions in the "Development" board!
Please make sure not to use this board for support questions. Please post issues with specific websites, extensions, etc. in the relevant boards for those topics.
Please keep things on-topic as this forum will be used for reference for Pale Moon development. Expect topics that aren't relevant as such to be moved or deleted.
-
noellarkin
- Fanatic

- Posts: 120
- Joined: 2021-07-27, 04:20
Issues with Canvas Poisoning
IIRC Palemoon was the first browser to come up with a canvas poisoning feature, to resist browser fingerprinting.
However, it seems these days, one of the ways platforms check for spoofed canvas is by checking if the canvas hash changes on subsequent page loads. Canvas hash may change over time, but if it changes between 2 page loads, then it's a red flag that the canvas is being poisoned. Is there any way to implement canvas poisoning that is atleast consistent for one browser session?
However, it seems these days, one of the ways platforms check for spoofed canvas is by checking if the canvas hash changes on subsequent page loads. Canvas hash may change over time, but if it changes between 2 page loads, then it's a red flag that the canvas is being poisoned. Is there any way to implement canvas poisoning that is atleast consistent for one browser session?
-
Moonchild
- Project founder

- Posts: 39699
- Joined: 2011-08-28, 17:27
- Location: Sweden
Re: Issues with Canvas Poisoning
Of course there is, but a browser session would be (much) too long of a period because one browser session allows extensive tracking across sites. So if we'd want to do this, then we'd need to use a different metric to determine when to "not be random".noellarkin wrote: ↑2024-06-06, 10:17Is there any way to implement canvas poisoning that is atleast consistent for one browser session?
"Sales hates anything that can't be turned into a confident sentence." - anonymous warehouse worker
"Why debate someone you fundamentally don't trust?" - Dario Amodei
"Seek wisdom, not knowledge. Knowledge is of the past; wisdom is of the future." -- Native American proverb
"Linux makes everything difficult." -- Lyceus Anubite
"Why debate someone you fundamentally don't trust?" - Dario Amodei
"Seek wisdom, not knowledge. Knowledge is of the past; wisdom is of the future." -- Native American proverb
"Linux makes everything difficult." -- Lyceus Anubite
-
noellarkin
- Fanatic

- Posts: 120
- Joined: 2021-07-27, 04:20
Re: Issues with Canvas Poisoning
could that be a setting left for the user to determine? Eg: refresh poisoned canvas every x hours/days?
OR
completely manual, like a button in preferences that says "refresh canvas"
OR
completely manual, like a button in preferences that says "refresh canvas"
-
Bilbo47
- Lunatic

- Posts: 420
- Joined: 2017-11-18, 04:24
-
andyprough
- Forum staff

- Posts: 1648
- Joined: 2020-05-31, 04:33
Re: Issues with Canvas Poisoning
Have you tried the Canvas Blocker Legacy extension that's on the Pale Moon add-on's page? https://addons.palemoon.org/addon/canvasblocker-legacy/noellarkin wrote: ↑2024-06-06, 11:24could that be a setting left for the user to determine? Eg: refresh poisoned canvas every x hours/days?
OR
completely manual, like a button in preferences that says "refresh canvas"
It's got a lot of options - whitelisting sites, changing the mode you use to block, changing the random number persistence, protecting different API's. I don't always use it, but when I do I find that any problems I have with websites are easily resolved by whitelisting them.
-
noellarkin
- Fanatic

- Posts: 120
- Joined: 2021-07-27, 04:20
Re: Issues with Canvas Poisoning
I have. IIRC there are a few modes - - one mode does the random poisoning thing. The other mode returns a persistent faked canvas value, but it's the same value that can never be refreshed/changed.andyprough wrote: ↑2024-06-06, 23:15Have you tried the Canvas Blocker Legacy extension that's on the Pale Moon add-on's page? https://addons.palemoon.org/addon/canvasblocker-legacy/
-
noellarkin
- Fanatic

- Posts: 120
- Joined: 2021-07-27, 04:20
Re: Issues with Canvas Poisoning
It seems to me that this would be the easiest to implement - -leave it up to the user to determine how frequently they want to refresh the canvas.noellarkin wrote: ↑2024-06-06, 11:24completely manual, like a button in preferences that says "refresh canvas"
-
Moonchild
- Project founder

- Posts: 39699
- Joined: 2011-08-28, 17:27
- Location: Sweden
Re: Issues with Canvas Poisoning
It's the least desirable and actually a lot more complicated to implement (requires permanently storing the poisoning somewhere, requires UI additions, l10n, etc.). The whole point of anti-fingerprinting stuff is that it happens automatically in the background. I have a way to improve this pretty easily since it's all pseudorandom (and not truly random) anyway so the poisoning can be made to behave consistently without a lot of added complexity. I'll just have to use a wet finger to set some sane defaults for rotation.noellarkin wrote: ↑2024-06-07, 04:29It seems to me that this would be the easiest to implement - -leave it up to the user to determine how frequently they want to refresh the canvas.noellarkin wrote: ↑2024-06-06, 11:24completely manual, like a button in preferences that says "refresh canvas"
EDIT: Filed Issue #2524 (UXP) making the granularity user-configurable is actually easy.
"Sales hates anything that can't be turned into a confident sentence." - anonymous warehouse worker
"Why debate someone you fundamentally don't trust?" - Dario Amodei
"Seek wisdom, not knowledge. Knowledge is of the past; wisdom is of the future." -- Native American proverb
"Linux makes everything difficult." -- Lyceus Anubite
"Why debate someone you fundamentally don't trust?" - Dario Amodei
"Seek wisdom, not knowledge. Knowledge is of the past; wisdom is of the future." -- Native American proverb
"Linux makes everything difficult." -- Lyceus Anubite
-
noellarkin
- Fanatic

- Posts: 120
- Joined: 2021-07-27, 04:20
Re: Issues with Canvas Poisoning
Thank you!Moonchild wrote: ↑2024-06-07, 10:34EDIT: Filed Issue #2524 (UXP) making the granularity user-configurable is actually easy.
-
andyprough
- Forum staff

- Posts: 1648
- Joined: 2020-05-31, 04:33
Re: Issues with Canvas Poisoning
So now that we have the canvas.poisondata.interval preference with Pale Moon 33.2.0 I wonder what the ideal interval will be? I think the 5 minute default seems good, but if we make it an 8 hour interval and we restart the browser several times will we be able to get rotation on the poisoning with each browser restart? Or will it stay the same throughout the entire 8 hour period regardless of restarts?
Just curious.
-
Moonchild
- Project founder

- Posts: 39699
- Joined: 2011-08-28, 17:27
- Location: Sweden
Re: Issues with Canvas Poisoning
It will survive browser restarts; it's purely time-locked the way I've implemented it.andyprough wrote: ↑2024-06-18, 23:30if we make it an 8 hour interval and we restart the browser several times will we be able to get rotation on the poisoning with each browser restart? Or will it stay the same throughout the entire 8 hour period regardless of restarts?
-
andyprough
- Forum staff

- Posts: 1648
- Joined: 2020-05-31, 04:33