Autor Zpráva
Martin Brodecký
Profil
Ahoj všem,

řeším u velkého projektu mnoho a mnoho formulářových vstupů pro uživatele. Prosím o radu a zhodnocení mé analýzy a popř. jak to děláte vy...

1. Na internetu léta desítky různých řešení pro Captchu - nevím, zda jsem cvok já nebo většina prezentovaných řešení - narazil jsem totiž z většiny na řešení, která ke svému fungování nutně potřebovala JavaScript či dokonce HTML5 :D (typu require políček). Taková ochrana mi přijde jak jako nakreslit si vchodové dveře do svého bytu na papír a tento papír nalepit mezi futra. Řešení něčeho takového jako je captcha přece musí být naprosto univerzální a naprosto nezávislé na prohlížeči - tzn. musí být VÝHRADNĚ A POUZE na straně serveru tz. např. ryze v PHP...

2. Nenávidím obrázky, čmáranice a podobné kraviny. Nenávidím ani reCaptchu od Googlu - moc robustní, moc velká, moc ošklivá a nijak zázračně účinná..

3. Co mi tedy zbývá? Po hodinách a hodinách hledání a pátrání jsem usoudil, že jedinou rozumnou možností je přestat hledat a napsat si svoji vlastní ochranu ryze v PHP, řešeno textově např. náhodným zobrazením dotazu na hlavní město ČR, jednoduchou početní úlohu jedna plus tři apod. Toto podtržené promícháním jmen políček v odesílaném formuláři, jedním skrytým políčkem pro přiblblé roboty a v poslední řadě úplným zamezením přístupu z rizikových zemí a to na úrovni .htaccess - typu Rusko, Ukrajina, čína, India apod.

Co vy na to? Má někdo chytřejší řešení? Hlavně, co se týká času, někde něco stáhnout apod. Děkuji.
Kcko
Profil
Martin Brodecký:
Co Ti vadí na JS řešení? Když to napíšeš šikovně tak neprojde snad žádný robot (do doby než se naučí prokousat JS) a funguje to i uživatelům bez JS (to se dá taky ošetřit).
3) a tohle Ti přijde elegantní?
Keeehi
Profil
Jde o to, zda to má bránit robotům, kteří procházejí různé stránky, nebo to má být ochrana i před robotem, který by někdo vytvořil za účelem útoku přímo na tvoji stránku.
Bubák
Profil
Martin Brodecký:
Pro zajímavost, v této Diskusi je to udělané JavaScriptem, který doplní "kouzelné číslo" do formuláře. Uživatelé bez JS jsou vystaveni menšímu nepohodlí a musí číslo, třebas tři-sta padesát-dva vyplnit ručně.
_es
Profil
Martin Brodecký:
úplným zamezením přístupu z rizikových zemí a to na úrovni .htaccess - typu Rusko, Ukrajina, čína, India apod.
Čiže trebárs český návštevník si v Rusku tvoje stránky nepozrie?
swisst
Profil
Já to řeším systémem otázka - odpověď. V phpBB je to už takhle připravené, existuje i plugin pro WordPress (a jiné systémy nepoužívám). Mám s tím docela dobré zkušenosti. Myslím, že roboti to nezvládají a když se dobře navolí otázka, tak to hodně omezí i cizojazyčné živé spammery.
Kubo2
Profil
Martin Brodecký:
úplným zamezením přístupu z rizikových zemí a to na úrovni .htaccess - typu Rusko, Ukrajina, čína, India apod.
Prepáč, ale toto je absolútny nezmysel. Sám zrovna trávim celý jeden rok v Indii a naozaj mi lezú na nervy webmasteri a hostingoví poskytovatelia, ktorí mi šikovne zamedzili pridávať komentáre či vôbec zobraziť si ich vzácne webstránky nachádzajúce sa v Európe či Amerike, použitím toho istého hlúpeho prístupu, aký máš v pláne aj ty.
Martin Brodecký
Profil
Pojďte mi konkrétně a racionálně odpovědět :)

1. Je mi schopen někdo rozumně a jednoznačně odpovědět, proč je internet plný hloupých obrázkových čmáranic, které se čtou tak špatně, jak jen je to možné, otravují uživatele a přitom jednou větou odsoudíte ryze textovou otázku např. jedna plus dvě.?

2. Může mi někdo vysvětlit, proč se zabývat v řešení ochrany formuláře u důležitého projektu vůbec něčím takovým, jako je JavaScript? Dnes ho roboti možná neumí, ale je to hodně diskutabilní a dle mých informací jej už umí navíc není pak problém naprogramovat robota šitého na míru konkrétnímu portálu.. Proč se vůbec zabývat takovýmito řešeními, když mi trvalo asi 15 minut času napsat jednoduchý antispam, který využívá POUZE a ryze PHP, proměnnou otázky vybírá náhodně z pole, informaci o otázce předává pouze číslem proměnné v poli do jména formulářového prvku a následně jej při odeslání ověří.. Jako bonus mám promíchání čísel pole až při ověřovacím procesu a tím mám dojem, že nějaký robot nemá absolutně šanci - a na míru napsaný útok by se psal dost těžko přávě díky náhodnému promíchání čísel v poli...


3. Zamezení přístupu v .htaccess do "rizikových" zemí je v mém případě zcela adekvátní - portál, který stavím se týká výhradně české republiky, nebudu konkrétní, ale rozhodně nebudete mít nejmenší důvod na něj chodit z indie dokonce i v Německu vám bude k ničemu. V běžné prezentaci bych takové řešení nevolil, ale zde ano.


swisst:
Díky za reakci, bohužel toto nepoužiji, mám vlastní redakční systém včetně vlastního jádra, nepoužívám žádné známé jádro typu WordPress apod...
Zechy
Profil
Martin Brodecký:
Na trojku už ti odpověděl Kubo2. Co když začnu využívat tvůj portál a na tejden třeba odjedu do Ruska? Nebo nemůžu snad mít důvod ho používat z Ruska?

EDIT: Navíc, to JS není hrozného a zdlouhavého. Jak už tu zminovali, jak to funguje tady, tak tady se jen zavolá příkaz, co pole vyplní a skryje jej. A uživatel se nemusí obtěžovat vyplněním.
Martin Brodecký
Profil
Kcko:
... do doby, než se roboti naučí javascript... do doby, než bude napsán "robot" přímo na portál, který vytvářím... když to napíšeš šikovně, tak to funguje i bez JS.... tzn. dvě zásadní nevýhody a k tomu celkem dost práce "vymýšlet to šikovně" a zohlednit situaci s a bez JS... V mém případě je kromě výsledku důležitá i efektivita práce, protože čas jsou peníze. Řešení v PHP nemá první dvě zmíněná rizika a tvorba takovéhoto řešení je mnohem snažší a časově tak lepší a tím i efektivnější :)
Martin2
Profil *
Martin Brodecký:
Pojďte mi konkrétně a racionálně odpovědět
Už ti odpověděl Keeehi v příspěvku [#3]. Obrana by měla odpovídat útokům. JavaScript spolehlivě zastaví drtivou většinu necílených útoků aniž by obtěžoval uživatele. Přísnější kontrola by měla následovat až v případě potřeby, nebo jen pro podezřelé návštěvníky – původem či chováním. Možností je spousta, ale nikdy bys neměl jen tak tupě plácnout otravnou CAPTCHu do formuláře a prudit návštěvníky zbytečně hrou „poznej co je to za ovoce“.
TomášK
Profil
Martin Brodecký:
Pokud bude psát někdo robota na tvůj web, tak si vytvoří databázi otázek a odpovědí, které tam máš. Není mi moc jasné, jak děláš předání otázky jen pomocí čísla, někde musíš tu otázku zobrazit uživateli, aby věděl na co odpovídá. Robot bude číst to, co uživatel, ne nějaké číslo. Vhodných otázek možná nebude tak moc, tedy budou stejné mezi různými weby. Což vede k tomu, že robot bude mít univerzální databázi otázek a odpovědí a nemusí být ani psaný pro konkrétní web. Vytvořit takového robota je jednodušší než vytvořit robota s podporou javascriptu, nepřekvapilo by mě, kdyby tvé řešení mělo horší úspěšnost.
Keeehi
Profil
Martin Brodecký:
Proti necíleným útokům se javascriptová ochrana dnes zdá dostatečná.

Pokud se bude jednat o cílený útok, ještě jsem neviděl textovou captchu, kterou bych nedokázal překonat. Co se týče rozpoznávání textu z obrázku, tak i to se dá v dnešní době celkem úspěšně zvládnout. Po chvilce hledání jsem našel dva a půl roku starý článek, kde je vidět, co bylo minimálně možné v té době. Nebo v té době Google popisoval obrázky pomocí přirozeného jazyka. A umělá inteligence a rozpoznávání obrazu se stále vyvíjí. Ono tedy už jen spíš záleží na tom, kolik prostředků je do toho útočník ochoten investovat.
_es
Profil
Martin Brodecký [#8]:
1: Lebo je ťažšie naprogramovať robota riešiaceho „obrázkové čmáranice“ ako robota riešiaceho textové otázky.
a přitom jednou větou odsoudíte ryze textovou otázku
To „odsúdenie“ písal kto? Otázky, ktoré idú ťažko strojovo vyriešiť, môžu byť dobré riešenie.
2: Lebo je to efektívne na tie ostatné prípady než spomenuté. Teda na útoky „nešité na mieru“ a na roboty bez podpory JS, ktorých je absolútna väčšina. Podpora JS nemusí byť až taká jednoduchá ako sa zdá. JS kód môže byť závislý od všetkého, čo je aj v prehliadači, závislý od nejakej interakcie návštevníka a pod. A robot, ktorý by to vyriešil, by fungoval oveľa pomalšie a pravdepodobne len na weby, kde by to „obsluha“ o chvíľu „ošetrila“. Keď má byť útok „šitý na mieru“, tak je často jednoduchšie si na to zaplatiť ľudského brigádnika, čo bude spam vkladať ručne.
3: Neodpovedal si na jednoduchú otázku v [#9] - čo ak si používateľ portálu na nejaký čas odskočí do „zlej“ krajiny? Okrem toho, aj návštevník z Česka môže mať zahraničnú IP. Ak napríklad použije nejaký anonymizátor, keď nechce, aby jeho poskytovateľ pripojenia videl, aké stránky navštevuje.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: