Protege tu aplicación web con Google reCAPTCHA en Ruby on Rails

‘Spam’ podría ser una de las palabras más temidas por cualquier propietario de una aplicación web. Especialmente en el caso de una aplicación con mucho contenido generado por los usuarios, lidiar con él puede convertirse en una pesadilla. Para mantener a raya a los spammers, se puede utilizar un servicio gratuito de Google llamado reCaptcha. Google reCaptcha es un servicio que protege el sitio web contra el spam y los abusos, y permite a los usuarios iniciar sesión sin tener que resolver un captcha; además, protege la aplicación frente a ataques de denegación de servicio al impedir el envío automatizado de formularios. Google reCaptcha, una solución mejor que los captchas de imagen existentes, es fácil de usar e incluye funciones de seguridad avanzadas. Mediante un motor avanzado de análisis de riesgos, reCaptcha impide que los bots automatizados realicen actividades de spam en tu aplicación. Además, es mucho más fácil de usar que los antiguos captchas de imagen. Antes de poder añadir Google reCaptcha a tu aplicación, debes seguir estos pasos: 1) Obtener las credenciales 2) Añadir las etiquetas de reCaptcha 3) Para gestionar la verificación, crear una clase de reCaptcha 4) En el controlador «Registrations», añadir el método «verify_reCaptcha» Configuración Paso 1:- Add the following to your gem file: gem “recaptcha”, :require => “recaptcha/rails” Paso 2:- Entra en http://developers.google.com, inicia sesión en tu cuenta de Gmail y busca ‘reCAPTCHA’. Haz clic en “Solicita una clave API”. Comprueba la clave secreta y la clave del sitio. Como su propio nombre indica, la clave secreta debe guardarse en un lugar seguro, mientras que la clave del sitio es la clave pública que se utiliza para autenticarse en Google. Registra el nombre de tu sitio en tu cuenta de Google para obtener la clave pública y la clave privada que se utilizarán más adelante en la aplicación. Una vez completado el registro, obtendrás la clave pública y la clave privada. Desde el lado del cliente, la clave pública se envía al servicio reCAPTCHA para solicitar un nuevo captcha. La clave privada se aplica en el lado del servidor para verificar si se ha introducido el valor correcto. A continuación, solicita una clave de la API de reCAPTCHA y añádela a los archivos de configuración de tu entorno: #: introduce esto en development.rb y en production.rb ENV_RECAPTCHA_PUBLIC_KEY= ‘your-public-key’ ENV_RECAPTCHA_PRIVATE_KEY= ‘your-private-key’ Paso 3:- Create a file named recaptcha.rb in config/initializers to configure recaptcha parameters. Recaptcha.configure do |config| config.public_key = ‘ ENV_RECAPTCHA_PUBLIC_KEY’ config.private_key = ‘ENV_RECAPTCHA_PRIVATE_KEY’ config.proxy = ‘http://www.google.com/recaptcha/api/verify’ end Paso 4:- Ver The Captcha Gem helps to render the actual captcha box. It’s as simple as putting the following into your view at the point where you want the captcha to appear: <%= raw recaptcha_tags %> If you are using SSL, use this instead: <%= recaptcha_tags :ssl => true %>, The SSL option ensures we send a https request to the recaptcha service. Paso 5:- Controlador
The Captcha Gem provides another helper method that posts to the reCaptcha API server to verify if the submission is correct. If it is then the method returns true, if not, it will add a custom error message that the recaptcha is wrong to the model instance. Here is the basic code as you might have it in the create action of your controller:- In devise controllers, app/controllers/registrations_controller.rb, Insert the following code: require ‘recaptcha.rb’ before_action :verify_recaptcha, only: [:create] def verify_recaptcha response = Recaptcha.verify(params) session[:sign_up] = params[:user].except(:password, :password_confirmation, :remoteip) if response.code == 200 if response[‘success’] flash[:notice] = “Recaptcha verification successful.” else redirect_to new_user_registration_path(user: params[:user]), alert: “Recaptcha verification error.” end else redirect_to new_user_registration_path(user: params[:user]), alert: “HTTP connection error.” end end
La sesión [:sign_up] se conserva, ya que el formulario de registro se puede rellenar automáticamente si falla la verificación.

Suscríbete para recibir las últimas actualizaciones

Artículos Relacionados

Acerca del autor de la publicación

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


es_ESSpanish