Jihokorejská Národní daňová služba (NTS) zabavila kryptoměnu Pre-retogeum (PRTG) v hodnotě 5,6 milionu dolarů. Pochlubila se v tiskové zprávě, do které vložila fotografii zabavených USB flash disků s kryptoměnovými peněženkami spolu se souvisejícími ručně napsanými mnemotechnickými obnovovacími frázemi. Krátce na to byla kryptoměna v hodnotě 4,8 milionu dolarů odcizena. O několik hodin ale vrácena, jelikož PRTG je extrémně nelikvidní, s denním objemem obchodování kolem 332 dolarů a zalistováním na jediné burze, MEXC [Bitcoin.com].
Komunita kolem Linuxu From Scratch (LFS) vydala nové verze knih s návody na instalaci vlastního linuxového systému ze zdrojových kódů Linux From Scratch 13.0 a Beyond Linux From Scratch 13.0. Pouze se systemd.
Byla vydána nová stabilní major verze 25.12 linuxové distribuce primárně určené pro routery a vestavěné systémy OpenWrt (Wikipedie). Jedná se o nástupce předchozí major verze 24.10. Přehled novinek v poznámkách k vydání. Podporováno je více než 2200 zařízení.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za únor (YouTube). Odstraněn byl veškerý kód napsaný ve Swiftu. JavaScriptový engine LibJS byl reimplementován v Rustu.
Byla vydána verze 1.94.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example. Zveřejněny byly výsledky průzkumu mezi vývojáři v programovacím jazyce Rust: 2025 State of Rust Survey Results.
Google zveřejnil seznam 185 organizací přijatých do letošního Google Summer of Code (GSoC). Dle plánu se zájemci přihlašují od 16. do 31. března. Vydělat si mohou od 750 do 6600 dolarů. V Česku a na Slovensku je to 900 dolarů za malý, 1800 dolarů za střední a 3600 dolarů za velký projekt. Další informace v často kladených otázkách (FAQ). K dispozici jsou také statistiky z minulých let.
Byla vydána únorová aktualizace aneb nová verze 1.110 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.110 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Apple představil 13palcový MacBook Neo s čipem A18 Pro. V základní konfiguraci za 16 990 Kč.
Kalifornský zákon AB 1043 platný od 1. ledna 2027 vyžaduje, aby operační systémy požadovaly po uživatelích věk nebo datum narození a skrze API poskytovaly aplikacím informaci, zda je uživatel mladší 13 let, má 13 až 16 let, má 16 až 18 let nebo má alespoň 18 let. Vývojáři linuxových distribucí řeší, co s tím (Ubuntu, Fedora, …).
Konference LinuxDays 2026 proběhne o víkendu 3. a 4. října v Praze v areálu ČVUT v Dejvicích na FIT. Čekají vás desítky přednášek, workshopy, stánky a setkání se spoustou chytrých lidí.
RTFM - Read Tumič's FlaMes!
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í:

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.
Tiskni
Sdílej:
Č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á.
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...
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.
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...
define("salt", "w6er54we65r4");
define("imgdir", "../captcha");
define("codefile", imgdir."/codes.txt");
jinak to nebude fungovat bez prostudování kódu
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: