Přihlásit se

Joomla 5.0.1 a 4.4.1 bezpečnostní vydání (29 lis 2023)

Joomla 5.0.1 a 4.4.1 je nyní k dispozici. Jedná se o bezpečnostní vydání pro Joomla 4.x. a 5.x.

Neviditelná Recaptcha - Expired

12. dub 2022 01:36 #146111
Pokud používáte na svém webu plugin pro neviditelnou ReCaptchu, možná jste se setkali s tím, že při složitějším formuláři se nepodaří formulář uložit, a Joomla zahlásí chybu "Captcha expired" (popř. nějakou českou variantu této hlášky).

Děje se to proto, že Google ReCaptcha má expiraci 2 minuty. Pokud v rámci toho času nestihne uživatel odeslat formulář, kontrola ReCaptcha neprojde. Joomla má bohužel implementaci ReCaptcha v3 nesprávně, dle Google by se měla spouštět až v okamžiku uživatelské akce (tedy odeslání formuláře) a ne při nahrání stránky (tak jak to dělá Joomla).

Obejít lze pomocí javascriptu, který automaticky reCaptchu přegeneruje každých 90s.
Code:
jQuery(function() { if(typeof grecaptcha === 'undefined') { grecaptcha = {}; } grecaptcha.ready = function(cb){ if(typeof grecaptcha === 'undefined') { const c = '___grecaptcha_cfg'; window[c] = window[c] || {}; (window[c]['fns'] = window[c]['fns']||[]).push(cb); } else { cb(); } } grecaptcha.ready(function(){ setInterval(() => { jQuery('[data-recaptcha-widget-id]').each(function () { grecaptcha.execute(jQuery(this).data('recaptcha-widget-id')); console.log('ReCaptcha reset #' + jQuery(this).data('recaptcha-widget-id')); }); }, 90 * 1000); }); });
Poděkovali: zpetr, Rudolf, Martin70

12. dub 2022 15:31 #146113
Odpověď od xunil
Zkušený uživatel
Nesnižuje to "bezpečnost"?
Google ReCaptcha má expiraci 2 minuty a má k tomu asi důvod.
Netuším, jen se ptám.

12. dub 2022 17:58 #146119
Odpověď od Cony
Moderátor
Myslím, že by nemělo. Pro refresh Captchy se volá znovu execute, tzn. vygeneruje se nový kód. Bezpečnost by to tedy snížit nemělo, zvýší to ale dotazy na servery ReCaptchy...

Powered by Fórum