Captcha Ashtor féle köntösben

Azt gonodolom, a webfejlesztéssel foglalkozó hölgyeknek és uraknak mindig a látogató érdekét kell a középpontba állítani. Ezen felbuzdulva írtam -már nem is tudom mikor- a fájdalommentes captcha vezérfonalát fejtegető erőlködésemet. Jöttek is szép számmal a hozzászólások, de a legkomolyabb javaslat fölött valamiért átsiklottam.

Ha nincsen kedved kattingatni, hát úgy is jó. Íme az idézet.

Ha egy kicsit belegondoltok, egyáltalán nincs is szükség a CAPTCHA-ra.

Miről szól a játék? Arről, hogy a botok ne tudjanak automatikusan bejegyzéseket küldeni. Ha ezt megoldod, akkor nem kell a júzereket kínlasztani.

Pedig erre a megoldás annyira egyszerű!

És a megoldás valóban nagyon egyszerű:

(FORM action=”suck_bot.php” id=”submitform”)
(INPUT ….
(/FORM)

(SCRIPT)
var cel1=”act”
var cel2=”ion”
var ext=”php”
id=”submit”+”form”
document.getElementById(id).action=cel1+cel2+”.”+ext
(/SCRIPT)

A megfelelő nyitó és záró tagokat kéretik normálisokkal helyettesíteni.

Erről a külső javascriptes botszivatásról volt szerencsém a későbbiekben egy NAGYON senior fejlesztővel beszélgetnem, és ő is elismerte, hogy ez aztán az ötlet.

Ashtornak mindeképpen járna innen egy afféle credit link, de a neten sajnos nem akadtam bele a weboldalába, pedig kétségkívül nagy tapsot érdemel, mert ezidáig ragyogóan működő védelmet adott a kezünkbe.

27 thoughts on “Captcha Ashtor féle köntösben

  1. Benbe

    Na igen, egy pár évig ez még nagyon jól működni fog. Én a trükköt a hozzászólók e-mail címének spambiztosítására használom egy ideje, azzal kiegészítve, hogy csak akkor áll össze a cím, ha az egeret a mailto link fölé viszi a látogató.

  2. Bagi Zoltán Post author

    Nézd András, tesztelt dologról van szó. Körülbelül két-három hete tettem fel a Captchát kiváltva és azóta nem jött spam. Azonos weboldal azonos hierarchia szintjén található egy WP telepítés, amelybe heti 4-5 “did not agree with you, but the last paragraph make sense” típusú vakítások érkeznek.

  3. pestaa

    Udvariatlannak találom, hogy kizárom mindazokat, akik Javascriptet nem támogató böngészőt használnak (akár munkahelyi hozzáférhetetlenségből, vagy korlátozott képességekből kifolyólag).

    Egy NAGYON senior fejlesztőnek ezt fejben kéne tartania.

  4. Bagi Zoltán Post author

    Pestaa, ennyi erővel az is udvariatlan, aki 1024*768-ra készíti a webdesignokat, mert még mindig van 1,8%, aki 800*600-zal netezik. Mocsok udvariatlan egy dög vagyok 😉

  5. pestaa

    A célcsoportomat miért szűkítse a technológiai felkészületlenségem?

    A Te példáddal élve, miért ne használhatnék rugalmas design-t, ha az visszafelé kompatibilis, és nem zárja ki azokat, akik még 800*600-ban tevékenykednek?

    Nyilván nem a leghatékonyabb, ha egyetlen kitöltésre váró rejtett mezőt használsz szűrőként, de mindenképpen a leghumánosabb.

    Aki javascript-tel szűri a robotokat, az az internet és a saját előnyéből kovácsol hátrányt.

  6. Bagi Zoltán Post author

    Nézd, én szintén híve vagyok a fluid layoutnak, azonban úgy hiszem, hogy nagyobb jót tehetek akár ezzel a javascripttel a valódi célcsoportomhoz tartozó netezőkkel, mint amennyire rosszat az egy-két százalékhoz tartozókkal. Szerintem nem valószínű, hogy
    -akár munkahelyi hozzáférhetetlenségből
    -vagy korlátozott képességekből kifolyólag
    a helyes webplap működtetésben gátolt felhasználók az interaktivitást keresve neteznének, vagy akár a valódi célcsoporthoz tartoznának.

  7. pestaa

    „úgy hiszem, hogy nagyobb jót tehetek”

    Mivel a CAPTCHA-t én is elutasítom, ezzel ezt a jót én is „elkövetem”. 🙂

    Ugyanakkor mindig igyekszem olyan megoldást találni, amelyik nem technológiafüggő, vagy kompatibilis visszafelé.

    A korlátozott képességei (rossz látás, netán vakság) miatt képernyőolvasót használó felhasználó természetesen *nem* az interaktivitást keresi, és nem valószínű, hogy kitöltenek komplexebb űrlapokat. (Ugyanakkor nem szabad elfelejtened, hogy mindenki maga válogatja meg a célcsoportját!)

    Csupán kényszerből visszamaradott böngészőt használó polgárainkról sem feltételezem, hogy előszeretettel szörföznek a neten multimédiás tartalmak után kutatva.

    Ugyanakkor hiszem, hogy az elegáns, hordozható, és legfőképpen könnyen konfigurálható megoldás nem ebben a javascriptben rejlik.

    Ha megfigyeled, én mindvégig a technikai sajátosságai miatt támadtam az elvet, mert nekem nem felel meg egy ilyen házilag összebarkácsolt félmegoldás (amilyenből sokmilliót találni a neten, és amelynek legfőbb magyar forrása a gportal-os tinioldalak tömkelege). Innen erednek a legburjánzóbb, legádázabb és destruktív programoz[gat]ói szokások („elég, ha működik”)…

    Véleményem nem személyed ellen irányuló sértés, csupán a féllábon tántorgó ideológiák szétszaggatása. 🙂

  8. SzG

    Nemrég egy oldalam elárasztotta egy magyar “valaki”, csak úgy passzióból 3-4ezer post -al, hogy feltörtem a captchád.

    Volt egy összeadós kis captcha, magam írtam (nem vagyok programozó), arra írt egy robotot. Igazából ezt az összeadós játékot nem gondoltam egy komoly védelemnek inkább csak a webre úgy általánosságában ráuszított robotok ellen gondoltam védekezésül, ami eddig be is vált, egyetlen spam sem jött át rajt. Az ilyen szándékos támadásokra persze nem felelt meg.

    Mi a véleményetek, ha kiegészítem egy ilyen, vagy egy másik fajta javascriptes játékkal, vagy ha a számokat javascripttel jelenítem meg azzal megfoghatom egy időre?

  9. Netuddki

    Jelezném csak, hogy a megoldás csupán elsőre tűnik olyan nagyszerűnek.
    Jól véd ugyan a véletlenszerű botok ellen, de nem véd a szándékos botok ellen. A captcha erre is jó. Sőt! Vannak ugyanis olyan oldalak, ahol egy form kitöltésével értékehez juthatsz. Lehet ez egy jutalom kód minden új regisztráció után, vagy lehet egy adatbázist rejtő oldal, amin keresztül egy bot a teljes adatbázishoz hozzáférhet. A való élet sok olyan oldalt produkál, ahol az átlátható js kód csak pár perccel nehezíti meg a behatolást, míg a captcha ott is valódi védelem.

  10. Bagi Zoltán Post author

    Netduddki, láttál már képolvasó szkriptet árusító oldalt?
    Én sajnos már többet is.

  11. Netuddki

    Nem, sajna még nem láttam. 🙁 És kissé szkeptikus is vagyok a képolvasás fejlettségi szintjével kapcsolatban, de ez csak érzés, mivel nem ismerek konkrét adatokat. Ha egy jól megírt capchát is el tud olvasni, akkor elfogadom. Úgy szinte tök mindegy, bár talán egy képolvasó script még így is költségesebbé teheti a hozzáférést, s ez is lehet valami.
    A való életben én ilyen illetéktelen hozzáférésekkel találkoztam eddig, ahol nyereségért botoltak. És ezeket az eseteket mindig megállította a capcha. … De, hát a világ fejlődik … 🙂

  12. y.men

    Ez nagyon nagy ötlet, de a legjobb az lenne, ha a beküldő formot is javascript -el raknánk ki, és egy külön .js fájlba írnánk a kódot. Akkor a robotok nem is látnák a form -ot és nem próbálnák a rossz helyre beküldeni az adatokat. Mert a gond sokszor nem is az hogy be tudják e küldeni, hanem hogy a próbálkozásukkal nagy terhelést okoznak. Ilyenkor nem is lenne terhelés. A captcha azért sem biztonságos mert túl népszerű, az egyedi megoldások mindig jobbak. Ráadásul nagy terhelést okoz, és sokszor a látogató nehezebben boldogul vele mint a robot.

    A másik hogy egy noscript tag-be beleírhatnánk, hogy “Hozzászólást csak Javascript engedélyezésével lehet írni”. Annak az esélye, hogy valaki nem használ Javascript -et és pont hozzászólást akar írni, elég kicsi. És nem a tartalomtól zárod el, csak a hozzászólás lehetőségétől. Szerintem ez nagyon baráti.

  13. Netallica

    Lehet, hogy naív megoldás és nem annyira egyszerű mindenkinek, de szerintem a tökéletes védelmet ehhez a flash adja.

    Akár a képi védelem is beépíthető, méghozzá a grafikus felület miatt úgy, hogy nincs az az A.I. ami azt megérti, de ráadául én úgy tudom (javítsatok ki ha tévedek), hogy a flash animációba ágyazott form-ot egyenlőre egy spam robot sem tudja visszafejteni.

    A html-ben nem jelenik meg a form, sem az azt kezelő php linkje.

  14. Szekeres Júlia

    Kedves Pestaa!

    “A célcsoportomat miért szűkítse a technológiai felkészületlenségem?
    A Te példáddal élve, miért ne használhatnék rugalmas design-t, ha az visszafelé kompatibilis, és nem zárja ki azokat, akik még 800*600-ban tevékenykednek?”

    Teljesen egyetértek veled! Ahány weboldalról eddig kikérték a véleményemet, mindig figyelembe vettem, hogyan jelenik meg különböző felbontásokban. Nagy érdeklődéssel néztem meg a tiédet… 800×600-as felbontással… alul csúszka 🙁

    “Ugyanakkor mindig igyekszem olyan megoldást találni, amelyik nem technológiafüggő, vagy kompatibilis visszafelé.”

    Milyen megoldást használsz? Nagyon kíváncsi vagyok minden olyan ötletre, ami a lehető legszélesebb kör számára teszi lehetővé a hozzáférést és hozzászólást, mégis biztonságos!

  15. Szekeres Júlia

    Kedves SzG!

    Én is magam írta összeadós captchát használok, ezért különösen kíváncsivá tett a hozzászólásod. Hogyan működött a tied, amit feltörtek?

  16. Bagi Zoltán Post author

    Júlia, tudod hogy szól a mondás a kákáról meg a csomóról? A világon mindenbe bele lehet kötni, és ezt Pestaa is nagyon jól tudja.

    Netallica, az itt felsorakoztatott érvek alapján a flash sem tökéletes, mert mi van azokkal akiknél nincs flash player?

    Tökéletes megoldás nincs, csak kompromisszum. Az optimális pedig a legjobb kompromisszum, szerintem. Van akinek a flash, van akinek recaptcha, van akinek Ashtor megoldása.

  17. Gáspár Zoltán

    Sziasztok!

    Az nem jó, ha közvetlenül a lap letöltés előtt készítek egy jó hosszú md5-ös, véletlenszerű azonosítót, elteszem session változóba és egy hidden űrlap mezőbe, a submit után a szerveren összehasonlítom a két változót? Ha nem egyezik, nem hajtom végre az eredeti műveletet… A “kívülről bele submit”-tól megvéd nem?

  18. blogmustra

    Mi van akkor ha a szerver egy egyszerű azonosítót küld ki, amiről majd a munkamenet miatt tujda hogy ő adta ki és megjegyzi hogy mikor. A visszaérkezéskor megvizsgálja mennyi idő telt el. Énnekem ezt a kommentet beírni bizony időbe telt. A robotnak nem.
    Ugyan egy robotot is be lehet programozni várakozásra, de ki gondolná hogy kell. És ha mégis, akkor is késleltethető – ritkítható a szemét.

    Olvasgattam a témában, és találtam olyan bejegyzést ahol a negatív captcha egy alternatíva. Azaz olyan mezők elrejtése amit az ember nem tölt ki, mert nem lát, de a robot kitölti, mert az input neve alapján csábító reklám-szemét küldési lehetőség.

    Olyan megoldásokat is próbálgatnak, ahol a viselkedést elemzik.
    http://www.usenix.org/events/nsdi05/tech/kandula/kandula_html/

    Tovább gondolva: egy olyan algoritmus, amelyik a billenyűleütéseket logolja valamilyen struktúrált formában, és ezt veti össze a szerver az elküldött adattal. A struktúráltságot egy űrlap letöltésenként változó kulccsal lehetne bonyolítani. A log adat már tartalmaz az emberi viselkedésből fakadó jellegeket. Ezt szintén lehetne elemezni. Persze mindez idő és duplikált (triplikált) adatforgalom és újfent idő a szerveroldalon.

  19. Bagi Zoltán Post author

    A negatív Captcha nagyon jó ötletnek tűnik azok alapján, amit írsz róla. Valójában a tökéletes megoldáshoz meg kellene vizsgálni a piacon elérhető spammer scripteket és működésük ismeretében kialakítani a védelmet.

    Visszatérve az eredeti Ashtoros ötlethez, jelentem még mindig hibátlanul működik. 🙂

  20. Csatlós Csaba

    Feltettem én is a honlapomra (meg még 1600 ügyfelünk honlapjára) 🙂

    Kíváncsi leszek hogy fog üzemelni.

    Ha jól működik, akkor itt a hozzászólás alatt miért kell beírnom, milyen nap van ma Magyarországon? 🙂 Na jó, ez már csak a kötelező kötekedés volt.

    Amúgy köszönet az ötletért, bárkié is. És köszönet az oldal tulajdonosának, hogy nyilvánosságra hozta.

  21. Bagi Zoltán Post author

    Csaba, köszönöm a hozzászólásod. A milyen nap van ma jellegű kérdésedre a válaszom az, hogy sajnos krónikus időhiányban szenved az oldal tulajdonosa, és a hobbilapokra nem nagyon jut ideje, de majd beszélek vele.

  22. Hódos Gábor

    Nem rossz megoldás ez sem. Én nemrég találkoztam egy másik fajta megközelítéssel, egy kapcsolati űrlap során.
    A pontos kódot sajnos most nem tudom idézni, de szerintem pillanatok alatt össze lehet rakni.
    A lényege az volt, hogy az űrlap végén volt egy input olyan szöveggel, hogy, ha robot vagy ide ne írj semmit. Ez az űrlap css-sel ki volt tolva -9999px-lel így az átlag ember nem is láthatta. Viszont a robot kitölti, mert robot és nem úgy lát.
    Az értelmező php pedig vizsgálta, hogy üres-e vagy sem.
    Szerintetek ez mennyire működhet jól?

  23. Bagi Zoltán Post author

    Lassan két éve a poszt megírását követően arra kellett rádöbbennem, hogy maga a koncepció téves. Nagyon szép egy dögös form és minden más, de funkcionálisan kritikus dolgokat nem biztos, hogy érdemes rábízni. Egy lead pedig nagy sok pénzt érhet, szóval manapság negatív captchát használok én is.

Comments are closed.