abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 14:22 | Zajímavý článek

    Český statistický úřad (ČSÚ): Průměrná hrubá měsíční mzda ICT specialistů v roce 2025 meziročně vzrostla o 6 % na téměř 100 tisíc korun. Nejlépe placeni byli vývojáři softwaru. Dlouhodobým trendem zůstává nízké zastoupení žen, a to jak mezi specialisty, tak studenty těchto oborů.

    Ladislav Hagara | Komentářů: 4
    dnes 14:11 | IT novinky

    Ochranný svaz autorský (OSA) připravuje žalobu na společnost Suno, která umožňuje generování hudby pomocí umělé inteligence (AI). ČTK to sdělil předseda představenstva OSA Roman Strejček. Suno podle něj bez souhlasu využívá k trénování svých modelů hudbu autorů, které svaz zastupuje. Nedávný investigativní materiál magazínu The Atlantic ukázal, že firmy jako Suno nebo Udio k trénování modelů používají rozsáhlé databáze obsahující miliony skladeb. V databázích, které časopis zveřejnil, lze dohledat i písně řady českých a slovenských umělců.

    Ladislav Hagara | Komentářů: 3
    dnes 13:33 | Komunita

    Byl publikován přehled dění a novinek z vývoje Asahi Linuxu, tj. Linuxu pro Apple Silicon. Vyřešen byl problém s macOS 27 Golden Gate. Vývoj lze podpořit na Open Collective a GitHub Sponsors.

    Ladislav Hagara | Komentářů: 1
    dnes 12:55 | IT novinky

    EU dnešním dnem zavedla clo ve výši 3 eur na balíky nízké hodnoty dovážené ze zemí mimo EU. To zahrnuje širokou škálu výrobků běžně nakupovaných on-line, jako jsou oděvy, hračky, elektronika a další spotřební zboží v hodnotě až 150 EUR.

    Ladislav Hagara | Komentářů: 5
    dnes 08:55 | Nová verze

    Vyšel Redmine 7.0, jeden z nejlepších open source ticketovacích systémů. Došlo k migraci na Rails 8, vylepšení UI/UX, Workflow, byla přidána podpora náhledu pro Microsoft Office a LibreOffice dokumenty, došlo k výkonnostním optimalizacím a přibylo spoustu dalších oprav a novinek. Více informací v oficiálním oznámení.

    Max | Komentářů: 0
    včera 16:22 | Zajímavý článek

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 166 (pdf).

    Ladislav Hagara | Komentářů: 1
    včera 03:33 | Pozvánky

    Blíží se prázdniny a než se rozutečete k moři, je na čase se opět sejít na Virtuální Bastlírně - pravidelném setkání elektroniků, ajťáků, bastlířů a obecně nadšenců do techniky. Co si pro vás strahovští bastlíři připravili tentokrát? Určitě proberou blížící se Linux Days i další události. U softwaru se chvíli zdrží a poví si kupříkladu o tom, jak se zbavit Bambu Cloudu, ale nepřijít o možnost ovládat tiskárnu na dálku. Řeč dojde i na AI,

    … více »
    bkralik | Komentářů: 0
    včera 03:22 | Nová verze

    Vývojáři postmarketOS vydali verzi 26.06 tohoto operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME, KDE Plasma Mobile, Phosh a Sxmo.

    Ladislav Hagara | Komentářů: 0
    včera 03:11 | Nová verze

    Byla vydána nová verze 2.55.0 distribuovaného systému správy verzí Git. Přispělo 100 vývojářů, z toho 33 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 1
    29.6. 20:22 | IT novinky

    Craig Loewen na blogu Microsoftu oznámil veřejnou preview verzi WSL kontejnerů, tj. linuxových kontejnerů ve Windows Subsystem for Linux (WSL). Spouští se příkazem wslc.exe.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (8%)
     (2%)
     (17%)
     (31%)
     (4%)
     (6%)
     (2%)
     (16%)
     (26%)
    Celkem 2030 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Jednoduchá CAPTCHA

    1.2.2006 18:22 | Přečteno: 22950× | ostatní | poslední úprava: 10.11.2006 13:06

    Internetem se poslední dobou šíří taková zlá, nemilá, ošklivá věc - spam v komentářích k článkům, záznamech v knihách hostů (jak říkáme my češi - guestboocích) a vůbec všem, co má nějaký formulář. Následující článek popisuje jednoduchou ochranu proti botům napsanou v PHP.

    Systém je postaven na "tradičním" rozpoznávání obrázků, k jejihž generování je použita knihovna GD. Základem jsou tyto 4 jednoduché funkce:

    function nahodny_text($delka) {
        for ($i=0; $i<$delka; $i++) {
            $rnd = rand(1,35);
            $rnd = ($rnd < 10) ? $rnd+48 : $rnd+55;
            if ($rnd == 79) $rnd++;
            $string .= chr($rnd);
        }
    
        return $string;
    }
    
    
    function obraz_textu($text, $cesta) {
        $im = imagecreate(strlen($text)*10, 15);
    
        imagecolorallocate($im, 255, 255, 255);
        $barva = imagecolorallocate($im, 0, 0, 0);
        imagestring($im, 5, 0, 0, $text, $barva);
    
        $soubor = $cesta.'/'.rand(0,255).'.png';
        imagepng($im, $soubor);
    
        return $soubor;
    }
    
    
    function pridej_kod($soubor, $kod) {
        $fp = fopen($soubor, 'a');
        ignore_user_abort(1);
    
        for($i=0; $i<3; $i++) {
            if (flock($fp, LOCK_EX)) {
    
                fwrite($fp, $kod."\n");
    
                flock($fp, LOCK_UN);
                break;
            }
            usleep(100);
        }
    
        fclose($fp);
        ignore_user_abort(0);
    }
    
    
    function pouzity_kod($soubor, $kod) {
        $fp = fopen($soubor, "r");
    
        while (!feof($fp)) {
            if ($kod == fgets($fp, strlen($kod)+1)) {
                fclose($fp);
                return true;
            }
        }
    
        fclose ($fp);
        return false;
    }
    

    První vytváří náhodný řetězec znaků (1-9,A-Z bez O) dané délky. Druhá z daného řetězce vytváří obrázek. Třetí a čtvrtá slouží k uložení respektivě zjištění již použitého kontrolního kódu.

    Vlastní kontrola pak probíhá následovně: Při každém zobrazení formuláře pro odeslání dat je vygenerován "čerstvý" kontrolní kód:

    while (true) {
        $kod = nahodny_text(delka_kodu);
        if (!pouzity_kod(codefile, $kod))
            break;
    }
    $obrazek = obraz_textu($kod, imgdir);
    

    Ten je převeden na obrázek s náhodným jménem, který se umístí někam k formuláři pro odeslání. K formuláři jsou přidány 2 položky - textové pole pro vlastní kód a skryté pole s hashem kódu. Při vytváření hashe je kód potřeba doplnit o nějakou tajnou "sůl":

    <img src="<?php echo $obrazek ?>" alt="Kontrolní kód"/>
    <input type="text" name="kod"/>
    <input type="hidden" name="hash" value="<?php echo md5($kod.salt) ?>"/>
    

    Při odeslání formuláře je kód doplněn o sůl a spočítán hash. Pokud se vypočtený hash shoduje s tím z tajného pole formuláře a daný kontrolní kód nebyl dosud použit, je příspěvek přijat, v opačném případě je odmítnut.

    if(md5($_POST['kod'].salt) == $_POST['hash']
      AND !pouzity_kod(codefile, $_POST['kod'])) {
        pridej_zaznam();
        pridej_kod(codefile, $_POST['kod']);
    } else
        echo "Neplatný kontrolní kód!";
    

    Mušky a mouchy řešení:

    1. Kód na vygenerovaných obrázcích je velice dobře strojově čitelný pomocí OCR
    2. Teoreticky mohou nastat situace, kdy uživatel zadá správný kód a přesto není příspěvek přijat. Toto se může stát v zásadě v těchto 2 případech:
      1. Mezi načtením stránky s formulářem a kontrolního obrázku je obrázek změněn jiným přístupem (s pravděpodobností 1:N, kde N je počet generovaných obrázků; v kódu výše je N=256)
      2. Zatímco uživatel píše příspěvek, je odeslán příspěvek se stejným kontrolním kódem (pravděpodobnost 1:34n, kde n je počet znaků kontrolního kódu
    3. A na závěr to nejlepší: "algoritmus" je nedeterministický a teoreticky se může stát, že generování "volných" kódů nikdy neskončí (nicméně pravděpodobnost, že se nepodaří najít "volný" kód jde za předpokladu, že je méně příspěvků než možných kódů, s počtem pokusů jdoucích k nekonečnu k nule) ;-)

    Tam, kde si můžete výše zmíněné problémy dovolit zanedbat (a to je většina reálných aplikací) nicméně bude ochrana fungovat dobře, navíc s minimálním "opruzem" pro uživatele.

    Zdrojové kódy guestbooku s uvedenou ochranou si můžete stáhnout z mých stránek, jak to vypadá v praxi můžete vidět zde.

           

    Hodnocení: 0 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    1.2.2006 18:48 helb | www.skatekralovice.com
    Rozbalit Rozbalit vše Re: Jednoduchá CAPTCHA
    Díky. Muj web to zatim teda nepostihlo (možná to bude tim že používam vlastní kód a ne blueboard - na většině blueboard booků jsem spam viděl), ale nikdy nevíš....
    Marek Bernát avatar 1.2.2006 19:09 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Jednoduchá CAPTCHA
    Jednoduché a priamočiare, tiež som niečo podobné kedysi písal. Ale v jednoduchosti je krása :-)

    Čo sa týka tej pripomienky 2.1, tak nechápem prečo ten rand obmedzuješ. Je to zbytočné a môže to narobiť kopec problémov. Možno ti išlo o to, aby si tie súbory nemusel mazať, ale aj 255 png súborov je podľa mňa dosť. Pritom zmazať ich nie je problém. Názov súboru si zapamätám v session, alebo pošlem v input hidden a hneď pri overovaní ho zmažem. Pritom názov toho obrázku by mohol radšej byť nejaké 20 znakové slovo. Tým je prevdepodobnosť prepísania prakticky nulová.
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    1.2.2006 22:16 Martin Tůma | skóre: 39 | blog: RTFM | Praha
    Rozbalit Rozbalit vše Re: Jednoduchá CAPTCHA

    Problém je ten, že ne každej (spíš jenom mizivý množství) vygenerovanej obrázek je taky "odeslanej zpět". Jistě, šlo by napsat nějakou funkci, která by procházela adresář a mazala soubory starší než T, ale automatický přepisování obrázků je prostě ještě jednodušší ;-) A ad velikost - 255 obrázlů zabírá přibližně 33kB...

    Každý má právo na můj názor!
    Marek Bernát avatar 2.2.2006 08:51 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Jednoduchá CAPTCHA
    Máš pravdu. Záleží od konkrétneho prípadu.

    Inak tá veľkosť je naozaj malá. Som zabudol, aké sú png výkonné pre takéto generované obrázky. Holt, človek je zvyknutý na tie rádovo 100kB monštrá zo screenshotov :-)
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    1.2.2006 19:44 Filda
    Rozbalit Rozbalit vše Re: Jednoduchá CAPTCHA
    Já se komentářovýho spamu zbavil mnohem jednodušším způsobem. Jsem zvědavej jak dlouho to řešení bude fungovat. Jednoduše jsem přejmenoval skript guestbook.php na gstbk.php a od ty doby se tam neobjevil ani jeden.
    Marek Bernát avatar 1.2.2006 20:06 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Jednoduchá CAPTCHA
    Ale toto nie je len na spam. Dá sa to využiť napríklad ako jeden stupeň ochrany pri verejnom hlasovaní do nejakej súťaže (to je v skutočnosti to, čo som robil ja; ale program bol prakticky rovnaký). Vďaka tomuto efektívne zabránite 99% skriptom, aby mohli niečo na stránke robiť, nie nutne len spamovať.
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    1.2.2006 19:49 EHP
    Rozbalit Rozbalit vše Re: Jednoduchá CAPTCHA
    Sice ne v php, ale zato podstatne vychytanejsi: http://jcaptcha.sourceforge.net/
    Marek Bernát avatar 1.2.2006 20:08 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Jednoduchá CAPTCHA
    Fakt vychytané. Na polovici obrázkov neviem rozoznať text. Tomu hovorím správny prístup.
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    JiK avatar 1.2.2006 20:17 JiK | skóre: 13 | blog: Jirkoviny | Virginia
    Rozbalit Rozbalit vše Re: Jednoduchá CAPTCHA
    nediv se, ma to odfiltrovat stroje. Zkratka uz myslis prilis moc jako skript.
    1.2.2006 22:21 Martin Tůma | skóre: 39 | blog: RTFM | Praha
    Rozbalit Rozbalit vše Re: Jednoduchá CAPTCHA

    Tak to je přesně to, čemu se chci vyhnout. Jak už tady zaznělo, půlka textů nejde přečíst. I tak jednoduchej obrázek, jako generuju v tom scriptu odfiltruje dneska všechny roboty i script-kiddies. Na projekty typu "ochrana SMS brány mobilního operátora", kde se už vyplatí se nějakým OCR zabývat se holt musí použít něco jinýho.

    Každý má právo na můj názor!
    1.2.2006 20:01 Spike | skóre: 30 | blog: Communicator | Praha
    Rozbalit Rozbalit vše Re: Jednoduchá CAPTCHA
    Bezva captcha je teďka na sms.vodafone.cz... zkuste to OCRkovat. :D
    24.7.2006 14:21 mato
    Rozbalit Rozbalit vše Re: Jednoduchá CAPTCHA
    je to velmi zle. preco to nerobis cez SESSION? neviem preco by som si mal zapratavat disk malymi obrazkami a povolovat 770 kvoly overeniu dakeho hlupeho kodu...
    24.7.2006 14:30 Martin Tůma | skóre: 39 | blog: RTFM | Praha
    Rozbalit Rozbalit vše Re: Jednoduchá CAPTCHA

    Přes SESSION? A jak si tím pomůžu?! Jinak 35kB obrázků mi opravdu nepřijde tak moc, abych si s tim v roce 2006 lámal hlavu a co se týče tý 770, tak to už nechápu vůbec. Pokuď to maj bejt unixová práva, tak nechápu, co tě nutí mít to nastavený takto, ta CAPTCHA to ale rozhodně neni...

    Každý má právo na můj názor!
    20.8.2008 11:55 HonzaMac
    Rozbalit Rozbalit vše Re: Jednoduchá CAPTCHA
    Výborné! Ještě by se mělo doplnit, že je třeba nadefinovat pár věcí...

    define("salt", "w6er54we65r4");

    define("imgdir", "../captcha");

    define("codefile", imgdir."/codes.txt");

    jinak to nebude fungovat bez prostudování kódu :-D
    14.1.2009 15:37 Hawwwran
    Rozbalit Rozbalit vše Re: Jednoduchá CAPTCHA

    CAPTCHA je mrtvá. Při použití DIVTCHA jsme na stejné úrovni uživatelské přívětivosti, ale bezpečnostně mnohem výše. Obrázky odpadají také.

    http://www.quicky.cz/novinky/antispamova-ochrana-divtcha-8.html

    Ukázka:

    http://www.quicky.cz/quicky/vyzkum/divtcha/

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.