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.
Top comments (0)