Obrázek   
Přihlášení
Uživatelské jméno:

Heslo:

Pamatovat si mne



Zapomenuté heslo

Nová registrace
Kam dále?
Hledání
Vzhled

(3 vzhledů)
Kdo je Online
8 uživatel(ů) je online (1 uživatel(ů) si prohlíží Články a povídání)

Uživatelé: 0
Hosté: 8

více...
Noví uživatelé
viktor
viktor
07.07.2024
Chlaban
Chlaban
19.04.2024
Kubrt
Kubrt
16.04.2024
Mirek
Mirek
14.04.2024
POKEC
POKEC
21.03.2024
Luigi
Luigi
14.03.2024
zirafak
zirafak
26.02.2024
rorejs
rorejs
27.12.2023
maroš
maroš
07.11.2023
vlada
vlada
17.09.2023
Kdo za co může
Administrátorka
Žirafka
Žirafka
Žirafička
Žirafička
Redaktoři
bernard
bernard
IvanH
IvanH
 
Emeritní
KatyH
KatyH

Zápisník pojídačky koláčů pro Xoops - Textová CAPTCHA pro XOOPS

Napsal/a Žirafka v 18. 04. 2015 v 9:07 (přečtení 2064×) Další články tohoto autora
Zápisník pojídačky koláčů pro Xoops
     Zjistila jsem, že obrázková captcha se setkává se značnou nevolí, nevraživostí až nepřátelstvím. Na jednu stranu to chápu, protože někdy s ní mám také potíže. Na druhou stranu je potřeba se chránit před útoky spamujících robotů. Tak tomu v dnešní době, bohužel, je. Tak jsem zkusila v systému nastavit captchu textovou, ale ta původní není pro roboty žádnou překážkou, spíše naopak. Tak jsem to zkusila trochu jinak

     Pro robota není snad snadnější problém, než si přečíst rovnici „1+1=?“ a správně doplnit znak „2“. Pokud však systém bude místo „2“ chtít napsat „dva“, tak je to pro roboty, zatím, nepřekonatelný problém. Upravená captcha běží asi dva týdny (v době psaní článku) a zatím se nenašel robot, který by ji dokázal překonat.


     Jak tedy změnu udělat?

     Je potřeba najít tento soubor: XOOPS_ROOT/class/captcha/text.php, který se stará právě o tento režim ověřovaní. Zároveň bude potřeba v souboru XOOPS_ROOT/class/captcha/config.php nastavit proměnnou 'mode' => 'text'. V souboru text.php je třeba najít tuto část:

function loadText()
    {
        
$val_a rand(09);
        
$val_b rand(09);
        if (
$val_a $val_b) {
            
$expression "{$val_a} - {$val_b} = ?";
            
$this->code $val_a $val_b;
        } else {
            
$expression "{$val_a} + {$val_b} = ?";
            
$this->code $val_a $val_b;
        }
        return 
'<span style="font-style: normal; font-weight: bold; font-size: 100%; font-color: #333; border: 1px solid #333; padding: 1px 5px;">'.$expression.'</span>';
    }

     a nahradit ji touto upravenou funkcí:

function loadText()
    {
        
$vysledek[0] = "nula";
        
$vysledek[1] = "jedna";
        
$vysledek[2] = "dva";
        
$vysledek[3] = "tři";
        
$vysledek[4] = "čtyři";
        
$vysledek[5] = "pět";
        
$vysledek[6] = "šest";
        
$vysledek[7] = "sedm";
        
$vysledek[8] = "osm";
        
$vysledek[9] = "devět";
        
$vysledek[10] = "deset";
        
$vysledek[11] = "jedenáct";                
        
$vysledek[12] = "dvanáct";
        
$vysledek[13] = "třináct";
        
$vysledek[14] = "čtrnáct";
        
$vysledek[15] = "patnáct";
        
$vysledek[16] = "šestnáct";                                            
        
$vysledek[17] = "sedmnáct";   
        
$vysledek[18] = "osmnáct";
    
        
$val_a rand(09);
        
$val_b rand(09);
        if (
$val_a $val_b) {
            
$expression "{$val_a} - {$val_b} = ? (slovem)";
            
$this->code $vysledek[($val_a $val_b)];         
        } else {
            
$expression "{$val_a} + {$val_b} = ? (slovem)";
            
$this->code $vysledek[($val_a $val_b)];
        }
        
       
        return 
'<span style="font-style: normal; font-weight: bold; font-size: 100%; font-color: #333; border: 1px solid #333; padding: 1px 5px;">'.$expression.'</span>';
    }


     No a to je vlastně celé, od tohoto okamžiku bude XOOPS při ověřování chtít místo číslice slovo a bude od robotů klid. Alespoň nějakou dobu. Je však otázkou, jak bude tato úprava fungovat v jiných jazycích, než je čeština, protože ta je, přeci jenom, poněkud exotická.

     Pokud má někdo pocit, že se dá funkce naprogramovat jinak a lépe, tak má zcela jistě pravdu. K výsledku vede mnoho cest a tato je asi nejjednodušší. A je plně funkční. Pokud máte jiné řešení, můžete se o něj podělit v komentářích
Hodnocení: 0,00 (0 hlasů) - Ohodnotit -
Formátovat pro tisk Poslat známému Vytvořit z článku PDF
Komentář je vlastnictvím svého autora. Vyjadřuje jeho názory, ne názory redakce nebo provozovatele webu či serveru.
Napsal/a Vlákno
Host
Publikováno dne: 18.4.2015. 11:14  
 Odp: Textová CAPTCHA pro XOOPS
Je správně na otázku 1+1= dva nebo dvě?

a v případě záporného výsledku minus nebo mínus?
Žirafka
Publikováno dne: 18.4.2015. 15:28   Aktualizováno dne:18.4.2015. 15:36
Administrátorka
Datum registrace: 04.05.2008
Bydliště: Ústecký kraj
Počet komentářů: 1257
 Odp: Textová CAPTCHA pro XOOPS
Správné odpovědi: "nula", "jedna", "dva", "tři", "čtyři", "pět", "šest", "sedm", "osm", "devět", "deset", "jedenáct", "dvanáct", "třináct", "čtrnáct", "patnáct", šestnáct", "sedmnáct", "osmnáct".

Záporný výsledek nenastane
Host
Publikováno dne: 18.4.2015. 16:08  
 Odp: Textová CAPTCHA pro XOOPS
tak si teď pěkně hledej novou capitchu, protože robot si ty stringy teď hezky načetl
Žirafka
Publikováno dne: 18.4.2015. 20:12   Aktualizováno dne:18.4.2015. 20:13
Administrátorka
Datum registrace: 04.05.2008
Bydliště: Ústecký kraj
Počet komentářů: 1257
 Odp: Textová CAPTCHA pro XOOPS
Mne nenaštveš, já mám ...

Robot si je sice může načíst, ale stejně mu budou nadraka. A pokud je tak inteligentní, že si to spojí, tak je tu vítán
Obrázek Obrázek
ObrázekObrázekObrázekObrázekObrázek
Obrázek
Redakční systém XOOPS 2.5.10
Obsah © 2008-2020 Žirafoviny