Fórum Root.cz

Ostatní => Odkladiště => Téma založeno: huff 13. 12. 2017, 21:11:26

Název: Jak blokovat XMLHttpRequest na cizí servery
Přispěvatel: huff 13. 12. 2017, 21:11:26
Jak je možné, že ze sptrámek usetreno.cz (neklikat, je tam spousta dalších krimiálních skriptů) chodí XMLHttprequesty na ipinfo.io (bonzuje to nějak ip)? ,což je cizí doména? Je nějak možné nějakým pravidlem blokovat xmlhttprequesty na cizí servery?
Název: Re:Jak blokovat XMLHttpRequest na cizí servery
Přispěvatel: Mazak 14. 12. 2017, 10:46:41
Standardne maji browsery nastaveno pro ajax neco jako "same origin policy" je mozne ze jsi to vypnul. Ale existuje proxy trik kde smejd stranka muze mit na svem serveru vlastni proxy a servovat scripty tretich stran pres svou domenu coz je pro browser temer nezjistitelne.
Název: Re:Jak blokovat XMLHttpRequest na cizí servery
Přispěvatel: j 14. 12. 2017, 10:55:01
Vypni si js ... easy.
Název: Re:Jak blokovat XMLHttpRequest na cizí servery
Přispěvatel: Miroslav Šilhavý 14. 12. 2017, 11:17:08
Vypni si js ... easy.

Teda, Vy co rada, to perla.

Doplnil bych, že mezi vhodná řešení patří ještě nechodit na tu stránku, neotvírat prohlížeč, nespouštět počítač, nemít internet a pro jistotu ani elektřinu.
Název: Re:Jak blokovat XMLHttpRequest na cizí servery
Přispěvatel: none_ 14. 12. 2017, 11:21:32
XMLHttpRequest muzes poslat kamkoliv. Jestli ti ten server odpovi je jina otazka. Prohlizec tohle nijak neovlivnuje. Jinak by totiz nefungovaly vsechny Google Analytics a podobny. Mozna existuje nejakej plugin, co to umi omezit, ale nijak si nepomuzes. V podstate odstranis ty, kteri vetsinou nedelaj nic nekaleho a nechas ty, co to schovavaji (napr. pres proxy na svym serveru) a jsou skodlivejsi. Jedina moznost jak zabranit XMLHttpRequest je zakazat JS. Jen se priprav na spoustu nefunkcnich webu.
Název: Re:Jak blokovat XMLHttpRequest na cizí servery
Přispěvatel: HackITo 14. 12. 2017, 12:21:31
Pokud je to na tom serveru povoleno, tak si stránka může posílat co chce kam chce. Stačí aby server vracel v headeru Access-Control-Allow-Origin: * a je to.

Ale i pokud to tak není, tak stále jde používat JSONP...
Název: Re:Jak blokovat XMLHttpRequest na cizí servery
Přispěvatel: DK 14. 12. 2017, 14:39:48
XMLHttpRequest muzes poslat kamkoliv. Jestli ti ten server odpovi je jina otazka. Prohlizec tohle nijak neovlivnuje. Jinak by totiz nefungovaly vsechny Google Analytics a podobny. Mozna existuje nejakej plugin, co to umi omezit, ale nijak si nepomuzes. V podstate odstranis ty, kteri vetsinou nedelaj nic nekaleho a nechas ty, co to schovavaji (napr. pres proxy na svym serveru) a jsou skodlivejsi. Jedina moznost jak zabranit XMLHttpRequest je zakazat JS. Jen se priprav na spoustu nefunkcnich webu.
Tohle neni pravda, pokud se XMLHttpRequest dela na jinou domenu nez aktualni, prohlizec to odmitne, protoze CORS. Koncovy server to muze ovlivnit nastavenim hlavicek
Název: Re:Jak blokovat XMLHttpRequest na cizí servery
Přispěvatel: none_ 14. 12. 2017, 16:58:27
No, uplne presne prohlizec posle nejdriv dotaz, kterym zjisti ty hlavicky. Pote pokracuje normalnim dotazem. Takze ad absurdum ten dotaz posle.

Btw to, jestli CORS zafunguje je ciste na prohlizeci. Pokud pouzijes klienta, kterej ty hlavicky ignoruje, tak se vysledek proste vrati. Dokonce si to muzes nastavit v prohlizeci: https://www.thepolyglotdeveloper.com/2014/08/bypass-cors-errors-testing-apis-locally/
Název: Re:Jak blokovat XMLHttpRequest na cizí servery
Přispěvatel: huff 14. 12. 2017, 18:03:12
Zaujaly mě tady 3 odpovědi na 2 téma:
1. Mazak + none_ na téma přesměrování přes proxy, na tom si vyláme zuby dost lidí
sice se to technicky netýká dotazu (protože doslovně to jde na 1st party) to je dost svinstvo, protože to i obfuscuje URL. V html je inline script, který nastaví javascriptově cookie "adb" což způsobí, že sama se stává zdrojem žumpy a i v nejpřísnějším nastavení ublock/umatrix (cokoli 3rd blokovat) to způsobí rozpad designu webu a také že vizuálně projde pár reklam (js kódu mnohem víc).


Tudíž se musí vypnout inline scripty (implementace ublock pro některé browsery umí selektivně blokovat inline scripty s daným výrazem idnes.cz###script:contains(adb), bohužel toto pravidlo nejde aplikovat genericky(na všechny weby), prostě pravidlo musí být definované pro každý server), tudíž je bezstarostnější vypnout inline skripty pro daný server uplně.

Další možnost je zakázat cookies (opět bezstarostně vypnout cookies pro doménu kompletně je jednodušší než hledat doplněk, který umí filtrovat globálně cookie s jménem adb)

Problém toho je, že nevíte, na jaké stránce tenhle hnus běží a na které ne. Při prvním načtení je stránka NEINFIKOVANÁ (neboť neodeslala cookie adb), až po další navigaci na na vás vykydne hnuj. Problém je, že způsobí i určitý "leak informací" na šmelinářské weby ( dnes není riziko webu ztráta dat, ale krádež/únik dat).
Dá se určitým způsobem blokovat "cizí requesty", pokud náhodou stránka je v infekčním režimu, ovšem s ne velkou úspěšností, je na to potřeba  filtr requestů z regurních výrazů zjednoušeně jako /[A-Z-a-z_-/]{30,120}/ navíc to i sežere legitimní obsah

Snad jediná naděje je rozeznat infekční režim, že response mají http header X-nginx-proxy antiadblock-* (zhruba). Uměl by někdo naprogramovat userscript nebo spíš extension, který hnoje označené tímto headerem filtroval?

2. CORS dotaz (zjistil jsem že nejdřív pošle HTTP OPTIONS a až pak komunikuje) může leaknout taky nějaká data?
Název: Re:Jak blokovat XMLHttpRequest na cizí servery
Přispěvatel: . 14. 12. 2017, 22:22:22
2. CORS dotaz (zjistil jsem že nejdřív pošle HTTP OPTIONS a až pak komunikuje) může leaknout taky nějaká data?
Hlavně cílový server ten požadavek neodmítne, takže klient pak může posílat, co se mu zlíbí.