Zajímalo by mě, jak pořádně detektovat a zablokovat stránky, které těží coiny (a k tomu skripty které otiskují HW podle GPU). Tedy ne zablokovat samotné stránky, ale zastavit/znemožnit těžení anebo fingerprintgu + upozornění, že stránka se tohle pokouší dělat.
Myslím si, že primitivní postupy jako :
-blokace domén coinhive.com, coinblabla.com a dalších jiných, které vzniknou každým dnem nové
-blokace skriptů s názevm miner.js, fingerprint2.js, fp.js, fp.min.js, min3r.js, 232.js, logo.png a dalších jiných, které stačí primitivně přejmenovat
- blokace skriptů obsahující proměnnou Miner, Min3r, adresa , libovolně přejmenovatelnou atd, nebo přistupujíci k webgl objektu
-další způsob skrytí bude v obfuskaci kódu přes různé closure compilery atd
- naivní rozšíření do chrome zastavující tyto těžiče. Už jen ten postup - přidat si další věc do prohlížeče, aby něco redukovala
-další způsob je přifaření skriptu k jinému skriptu nutnému k běhu stránky (jquery.js, i když to je zrovna blbý příklad, prostě nějaký skript, který je nutný pro běh stránky například načítání PSČ do formuláře)
- další způsob je vnoření skriptu inline a zamíchání s logikou stránky.
Takže v podstatě je spousta způsobů jak skrýt, promíchat těžící skript do stránky, aby ho šlo špatně detekovat, natož zastavit (odnesla by to i funkčnost stránky).
Existuje nějaké sofistikovanější cesta, jak zabránit těmto věcem (těžiče, fingerprint, přístup k schránce)?
- těžiče: jde o běh regulérního JS kódu, občas nějaký websocket či xhr komunikace. Je nějaké chytré řešení na úrovni něčeho jako inspekce běhu JS. Nebo je snad jiné řešení než vypnutí JS?
- fingerprint - přistup k určitým webgl api + nějaký způsob uložení/odeslání výsledku. Tento výsledek může být chytře obfuskován nebo někam uložen a jiná část kódu ho může číst, že není možné poznat, že hodnota byla uloženena /odeslána fingerprint knihovnou. (něco jako praní peněz, přes prostředníky, formuláře, atributy)
- schránka - restrikce k api schránce. Neznám prohlížeč, který by umožňoval práci se schrákou zakázat. Existuje k tomu nějaké api nebo způsob jak to zakázat externě (přes usescript atd a javascriptové přepisování funkcí a zmrazování objektů. Je tohle stoprocentní?)?