Přihlásit se

Neviditelná Recaptcha - Expired

12. dub 2022 01:36 #146111 od Cony
Neviditelná Recaptcha - Expired vytvořil uživatel Cony
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); }); });

Pro možnost přispívání do fóra se přihlaste.

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

Pro možnost přispívání do fóra se přihlaste.

12. dub 2022 17:58 #146119 od Cony
Odpověď od Cony
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...

Pro možnost přispívání do fóra se přihlaste.

Powered by Fórum