2 min de lectura node aws recapcha español

Validación de tokens de reCAPTCHA en Lambda de AWS

El reCAPTCHA de Google es una herramienta que ayuda a proteger tus sitios web y aplicaciones de spam y ataques automatizados. Cuando se implementa en el frontend, el reCAPTCHA genera un token que el usuario debe proporcionar al backend para validar que es un usuario humano.

En este artículo, veremos cómo validar un token de reCAPTCHA en una Lambda de AWS.

Pasos previos

Antes de comenzar, necesitamos crear los siguientes recursos:

Un proyecto de Node.js
La dependencia axios
Una variable de entorno RECAPTCHA_SECRET_KEY en la Lambda
Para crear un proyecto de Node.js, podemos usar el siguiente comando:
pnpm init

Para instalar axios, podemos usar el siguiente comando:
pnpm install axios

Para crear la variable de entorno RECAPTCHA_SECRET_KEY, podemos ir a la configuración de la Lambda y agregar la siguiente entrada:

KEY=RECAPTCHA_SECRET_KEY
VALUE=secret_key_here

Código de la Lambda

El siguiente código muestra cómo validar un token de reCAPTCHA en una Lambda:

const axios = require("axios");

exports.handler = async (event) => {
  try {
    const { token } = JSON.parse(event.body);
    if (!token) {
      return {
        statusCode: 400,
        body: JSON.stringify({ message: "No token provided" }),
      };
    }

    const secret = process.env.RECAPTCHA_SECRET_KEY;
    const url = `https://www.google.com/recaptcha/api/siteverify?secret=${secret}&response=${token}`;

    const response = await axios.get(url, {
      timeout: 5000,
    });

    if (!response.data) {
      return {
        statusCode: 500,
        body: JSON.stringify({ message: "Error fetching reCAPTCHA response" }),
      };
    }

    const { success } = response.data;

    if (!success) {
      return {
        statusCode: 400,
        body: JSON.stringify({ message: "Invalid token" }),
      };
    }

    return {
      statusCode: 200,
      body: JSON.stringify({ success }),
    };
  } catch (error) {
    return {
      statusCode: 500,
      body: JSON.stringify({ message: error.message }),
    };
  }
};

Lo que realiza el código seria lo siguiente:

Primero, el código verifica si el token está presente en el evento de entrada. Si no lo está, devuelve un error.
Luego, el código obtiene el secreto de reCAPTCHA de la variable de entorno.
A continuación, el código crea una URL para la API de verificación de reCAPTCHA.
Luego, el código envía una solicitud GET a la API de verificación de reCAPTCHA.
Finalmente, el código comprueba la respuesta de la API. Si la respuesta indica que el token es válido, el código devuelve un código de estado 200. Si la respuesta indica que el token no es válido, el código devuelve un código de estado 400.

Danniel Navas

Escrito por Danniel Navas

Senior Product Engineer. Escribo sobre la intersección entre buena ingeniería y gran experiencia de usuario. Si te gustó esto, sígueme en Twitter .