¡Bienvenido! ¿Aún no estás registrado?, deberás registrarte antes de poder usar el Chat, Comentar y Descargar en el Foro. Usa un email válido para la activación.
Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

COMPLEMENTOS Captcha en Login v1.0
#1

0
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:

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

Cámbialo por:
 
<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>:

 
<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:

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

Cámbialo por:
 
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.






Responder


Compartir en:

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)