Phpost

Versión completa: Captcha en Login v1.0
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Captcha en Login v1.0
Mejora de seguridad para Risus Nova 2.0 — PHPost


Captura
[img]Registrate o inicia tu sesión para ver este contenido[/img]


Añade el captcha de Cloudflare Turnstile al formulario de login, el mismo que ya tiene el registro. Evita ataques de fuerza bruta automatizados y bots que intenten acceder a cuentas.



🛡️ Características
 
  • Usa el mismo Cloudflare Turnstile ya configurado en el registro
  • Sin instalador ni base de datos
  • Solo 2 cambios en 2 archivos
  • Si no hay clave configurada el captcha se omite — no rompe nada
  • Compatible con el mod de Protección de Login y 2FA
 


📋 Requisitos
 
  • Risus Nova 2.0 instalado y funcionando
  • Cloudflare Turnstile configurado (clave pública y secreta en los ajustes del admin)
 


🛠️ Instalación

Paso 1 — Añadir el widget en head_menu.tpl

Abre themes/default/templates/sections/head_menu.tpl y busca:

 
Código:
<input type="submit" title="Entrar" value="Entrar" style="width:198px; margin-top:5px;" class="mBtn btnOk">

Cámbialo por:
 
Código:
<div class="cf-turnstile" data-sitekey="{$tsConfig.pkey}" data-size="compact" style="margin:8px 0;"></div>
<input type="submit" title="Entrar" value="Entrar" style="width:198px; margin-top:5px;" class="mBtn btnOk">

Paso 2 — Añadir el script de Turnstile en main_header.tpl

Abre themes/default/templates/sections/main_header.tpl y añade antes de </head>:

 
Código:
<script src="Registrate o inicia tu sesión para ver este contenido" async defer></script>

Paso 3 — Verificar el captcha en ajax.login.php

Abre inc/php/ajax/ajax.login.php y busca:

 
Código:
if(empty($user) or empty($pass)) {
    echo '0: Faltan datos';
} else {

Cámbialo por:
 
Código:
if(empty($user) or empty($pass)) {
    echo '0: Faltan datos';
} else {
    // ── Verificar Turnstile ──
    $captcha = $_POST['cf-turnstile-response'] ?? '';
    if (!empty($tsCore->settings['pkey']) && !empty($tsCore->settings['skey'])) {
        $opts = ['http' => ['method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => http_build_query(['secret' => $tsCore->settings['skey'], 'response' => $captcha, 'remoteip' => $tsCore->getIP()])]];
        $res  = json_decode(@file_get_contents('Registrate o inicia tu sesión para ver este contenido false, stream_context_create($opts)), true);
        if (empty($res['success'])) { echo '0: Verifica que no eres un robot.'; break; }
    }
    // ────────────────────────

Paso 4 — Borrar la caché

Borra el contenido de la carpeta /cache/ del sitio.


🗑️ Desinstalar

Restaura las líneas originales en head_menu.tpl y ajax.login.php.

 
¿Tienes dudas o encuentras algún problema? Déjalo en los comentarios.