Hogyan működik captcha
És kezdetnek - ha úgy gondolja, hogy az ilyen ellenőrzés CAPTCHA fog működni:
if ($ _ POST [ 'captcha'] == $ _SESSION [ 'captcha']) return true; (Esettanulmány)
akkor mélyen téved.
A definíció alapján, captcha - ez automatizált nyilvános Turing-teszt (a teszt, amely képes átadni az emberek, de nem a számítógép). Ebben a cikkben azt fogja vizsgálni a példa a tulajdonát CAPTCHA legelterjedtebb a maga nemében - a szöveg a képen, bár szinte mindent írt ugyanúgy alkalmazható bármilyen típusú CAPTCHA.
A két fő tulajdonságai CAPTCHA
Bármilyen CAPTCHA két tulajdonsággal kell rendelkeznie, amely nélkül nem fog működni:
Ellenállás elismerése - ingatlan, védi a captcha algoritmus - mint például a szövegfelismerő rendszert. Ez biztosítja, hogy az emberek képesek lesznek olvasni a szöveget a kép, és a számítógép nem.
Antiprimer: standard captcha fórum phpBB 2.x ingatlan nem rendelkezik -, mert a relatív könnyű felismerés megjelent szkriptek spam egy sor fórumok kényszeríti a webmesterek, hogy módosítsa a captcha sokkal stabilabb.
Ellenállás találgatás - captcha tulajdonság, amely nem engedi meg kitalálni az érték egy kevés alkalommal (legalább 1000). Ha a beállított lehetséges értékek a CAPTCHA alacsony, a program nem lesz nehéz kitalálni neki kiválasztása helyett elismerést.
Antiprimer: számtani CAPTCHA mint például a "2 + 1" (brute számok 1-től 20 rövid idő alatt eredményez).
Antiprimer: válasszon több képek egyet, amely ábrázolja egy macska.
Ellenőrzés captcha
Érték a vizsgálatot meg kell tárolni a szerveren, és nem küldi el a képet a böngészőben. Összehasonlításképpen, a látogatók, és a helyes érték egy captcha kulcsfontosságú a használni kívánt, amelyet át együtt CAPTCHA (session ID száma CAPTCHA stb)
Antiprimer ha továbbítja magát captcha és értékét annak ellenőrzésére (beleértve kódolt), az ember egyszer is elég, hogy felismerje a CAPTCHA és utána pedig egy „válasz” - „ellenőrző érték” az ő script (link a nagyböjt kezdete, mint az idő ebben az esetben)
Az ellenőrzés előtt választ - meg kell győződnie arról, hogy nem üres. Ellenkező esetben a támadó nem tud feltölteni egy képet, vagy eltávolítja az azonosító az aktuális munkamenet, át null értéket, és adja át a captcha, mert Előfordul, hogy összehasonlítunk két üres sor (a PHP nem létező értékű üres string).
Antiprimer: akkor is, ha a kód már említettem ($ _ POST [ 'captcha'] == $ _SESSION [ 'captcha']) return true;
És ezt a kódot már írt egy tapasztalt programozó.
Az ellenőrzés után a tárolt CAPTCHA el kell távolítani. Ha ezt nem teszi meg, a támadó értékét használja korlátlan számú alkalommal újra. Igen, ha az oldal frissítése után az űrlap frissítése és a CAPTCHA (akár a generációs formában, vagy a generációs képek), csak a szkript nem tudja betölteni az űrlapot újra (meg kell említeni, hogy ez nem igaz, ha a webhely használ eldobható CSRF-zsetonok formák).
Antiprimer: hipotetikus formában belépés, ami egyszer is elég, hogy adja meg a CAPTCHA rendesen, és válassza ki a jelszót script, elkerülve a regenerációs CAPTCHA a szerveren.
golyóálló CAPTCHA
Elleni védelem brute force. Ha a captcha ellenálló elismerést, de nem nagyon ellenálló a rendezési (például szükséges a csak olvasható 3-4 számjegy), kívánatos, hogy a szám a rossz válaszok „egy ip» / «egy login» / stb Az ilyen korlátozások ellenőrizni kell, hogy ellenőrizze a legtöbb CAPTCHA (vagyis akkor is, ha helyesen adta meg a captcha, ha korlátokat nem kell áthaladni) egyébként nem zavarja túlságosan.
DoS elleni védelem. Amikor létrehozunk egy captcha a szerveren, meg kell érteni, hogy ez egy kényelmes vektor végző DoS támadások (amely eltérően DDoS, gondoskodik minden tanuló). A biztonság, akkor számának korlátozása generáló CAPTCHA egy ip, caching rögzítések stb További részletek
Elleni védelem elismerést. Ha úgy dönt, egy CAPTCHA, vagy hirtelen fog írni magad, tanácsos megérteni, mi a CAPTCHA védve elismerést. Vannak kész egyetemes elismerését CAPTCHA scriptek elvén működő OCR. és ha a webhely a spammerek érdeklődését fennáll annak a veszélye, hogy ezek használata / a forgatókönyvet kifejezetten a captcha. Az utóbbi időben azonban arra utal, inkább az a szint, helyszínek Yandex és vk, de az a változat, amelyek védelmet nyújtanak a banális OCR kívánatos biztosítani.
Védelem antigeytov. Beszéd hivatalosan, a CAPTCHA a Turing-teszt nem szükséges, hogy megvédje Önt a antigeytov, mivel ebben az esetben fel fogja ismerni az embereket. Gyakorlati szempontból ez a kérdés nagyon fontos, és védeni szükséges.
Itt nem lehet a „gold standard” (mivel ebben az esetben antigeyty bevezetni a támogatás), így szabadon, hogy kiegészítse a captcha semmilyen trükk, hogy ez a felismerés antigeyt lehetetlen. Például:
- nem szabványos CAPTCHA (gyűjtemény a puzzle, forgassa el a képet, kattints a területen a fotó, stb);
- cirill CAPTCHA - a legegyszerűbb megoldás, de számos hátránya: csak a megfelelő közönség az orosz projektek antigeyty támogatásával cirill;
- használata a virtuális billentyűzet mellett a captcha megadása szabványos karakterek vagy számok (kényelmetlen lehet a mobil felhasználók);
- használata CSS vagy JS captchas (generációs képeket halom div helymeghatározás vagy egy vászon)
és így tovább.
Ne kérdezd, hogy adja meg a captcha, ha már láttuk, hogy az ember előtt. Itt azonban óvatosnak kell lennünk, hogy a forma nem lehet használni egy script tetszőleges számú alkalommal, miután egyetlen bemeneti captcha ember.
Példa: regisztrációs űrlapot. Ha én vagyok valahol rögzíteni és elfelejtettem, hogy írja be az „irányítószám”, de rendesen be captcha - nem kell mutatni nekem egy újat. Töltsön 10 percig próbálta menteni valahol, hogy most ebben a különleges formában most próbálják kitölteni egy élő személy. A tíz perc alatt takarít sok órát az emberiség.