Cómo usar CAPTCHA ASP.NET BotDetect en servidores Linux/Apache

Esta página le enseñará como agregar la protección de BotDetect CAPTCHA para su aplicación web ASP.NET alojada usando el servidor web de Apache en un sistema Linux (SUSE, Red Hat, Fedora, CentOS, ...)

Prerequisitos

  • Apache 1.3.x/2.0.x/2.2.x
  • BotDetect CAPTCHA 2.0.x para ASP.NET

Asumimos que usted ya tiene instalado el servidor web de Apache en su sistema. Si no, porfavor descarge Apache, y lea la siguiente guía de instalación Apache .

Hasta el momento, las instalaciones BotDetect CAPTCHA solo pueden ser ejecutadas en un sistema Windows, pero usted puede copiar el montaje de BotDetect CAPTCHA (Lanap.BotDetect.dll) y los ejemplos de proyectos ASP.NET a su sistema Linux. Si usted no tiene una instalación de BotDetect CAPTCHA, porfavor descarge la versión de prueba de BotDetect CAPTCHA.

Guía paso-por-paso

Esta guía describe todos los pasos requeridos para crear un nuevo sitio web ASP.NET y agregarle la protección de BotDetect CAPTCHA. Si ya tiene su sitio creado y configurado, puede pasar por alto pasos que no se aplican a su servidor.

Paso 1. Instalar el framework de Mono

Usaremos el framework de Mono para ejecutar su aplicación web .NET en un sistema Linux.

Mod_Mono es un módulo Apache 1.3/2.0/2.2 que provee soporte ASP.NET para el servidor web favorito, Apache. El módulo arroja llamadas para páginas ASP.NET a un programa externo, mod-mono-server, cual maneja las llamadas. La comunicación entre el módulo Apache y mod-mono-server es establecida usando un socket Unix o un socket TCP.

- Mono Project

Instalar Mono-core

Descargar el paquete Mono-core apropiado para su sistema desde http://www.go-mono.com/mono-downloads/download.html. Es recomendado que instale los siguientes paquetes en este orden:

  • giflib-4.1.3-8.i386.rpm
  • libexif9-0.5.12-3mdk.i586.rpm
  • libgdiplus0-1.9-1.rhel4.novell.i386.rpm
  • mono-core-1.9.1-2.novell.i586.rpm
  • mono-data-1.9.1-2.novell.i586.rpm
  • mono-data-firebird-1.9.1-2.novell.i586.rpm
  • mono-data-oracle-1.9.1-2.novell.i586.rpm
  • mono-data-postgresql-1.9.1-2.novell.i586.rpm
  • mono-data-sqlite-1.9.1-2.novell.i586.rpm
  • mono-data-sybase-1.9.1-2.novell.i586.rpm
  • ibm-data-db2-1.9.1-2.novell.i586.rpm
  • mono-nunit-1.9.1-2.novell.i586.rpm
  • mono-web-1.9.1-2.novell.i586.rpm
  • mono-winforms-1.9.1-2.novell.i586.rpm
  • bytefx-data-mysql-1.9.1-2.novell.i586.rpm
  • xsp-1.9.1-0.novell.noarch.rpm

Instalar Mod_Mono

Es recomendado instalar Mod_Mono desde un paquete fuente, de esta manera puede especificar que versión de Apache quiere usar. Algunos paquetes RPM (por ejemplo, mod_mono-1.9-0.rhe14.novell.i386.rpm) estan ya compilados para versiones específicas de Apache, asi que usted puede usar un paquete compilado para su sistema y versión de Apache.

Descargar la fuente de Mod-Mono (mod_mono-1.9.tar.bz2) desde http://ftp.novell.com/pub/mono/sources.stable/, y seguir la guía Compiling Mod_Mono from source.

Configurar Apache para que carge Mod_Mono

Agregar las siguientes lineas al archivo httpd.conf (localizado en /usr/local/apache2/conf por defecto):

Include conf/mod_mono.conf

<Location /mono>
  SetHandler mono-ctrl
  Order deny,allow
  Deny from all
  Allow from 127.0.0.1
</Location>

La primera linea cargará el módulo Mod_Mono. Asegúrese que tiene mod_mono.conf en el mismo directorio que httpd.conf después de instalar Mod_Mono.

Las lineas restantes (que son opcionales) serán agregadas al panel de control Mod_Mono para que pueda controlar Mod_Mono usando http://localhost/mono.

Paso 2. Crear un sitio web ASP.NET

Crear una nueva carpeta para el sitio web (usaremos BotDetectSample en estas instrucciones), en la carpeta de contenido web Apache (/usr/local/apache2/htdocs/ por defecto)

Cómo utilizar BotDetect ASP.NET CAPTCHA en servidores Linux/Apache: imagen 1

Crear un nuevo archivo llamado Default.aspx en la carpeta del sitio web, con el siguiente contenido:

<%@ Page Language="C#" AutoEventWireup="true" 
  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
  Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/
    xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>BotDetect Demo</title>
</head>
<body>
  <form id="form1" runat="server">
    <div id="PromptDiv">
      <span id="Prompt">Type the characters you see in 
        the picture</span>
    </div>
  </form>
</body>
</html>

Cómo utilizar BotDetect ASP.NET CAPTCHA en servidores Linux/Apache: imagen 2

Cómo utilizar BotDetect ASP.NET CAPTCHA en servidores Linux/Apache: imagen 3

Crear un nuevo archivo llamado Default.aspx.cs en la carpeta del sitio web, con el siguiente contenido:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page 
{

}

Cómo utilizar BotDetect ASP.NET CAPTCHA en servidores Linux/Apache: imagen 4

Cómo utilizar BotDetect ASP.NET CAPTCHA en servidores Linux/Apache: imagen 5

Agregar las siguientes lineas en httpd.conf (localizado en /usr/local/apache2/conf/por defecto):

Alias /BotDetectSample "/usr/local/apache2/htdocs/BotDetectSample"
AddMonoApplications default "/BotDetectSample:/usr/local/apache2/
  htdocs/BotDetectSample"
MonoServerPath /usr/bin/mod-mono-server2
<Location /BotDetectSample>
    SetHandler mono
</Location>

Cómo utilizar BotDetect ASP.NET CAPTCHA en servidores Linux/Apache: imagen 6

Reiniciar Apache:

$httpd –k restart

...y si todo está configurado correctamente, debería ver la página en su navegador cuando vaya a http://localhost/BotDetectSample/

Cómo utilizar BotDetect ASP.NET CAPTCHA en servidores Linux/Apache: imagen 7

Paso 3. Configurar su sitio para que use BotDetect CAPTCHA

Crear una sub-carpeta llamada bin en la carpeta del sitio web

Cómo utilizar BotDetect ASP.NET CAPTCHA en servidores Linux/Apache: imagen 8

Copiar el archivo Lanap.BotDetect.dll en la carpeta bien recién creada

Cómo utilizar BotDetect ASP.NET CAPTCHA en servidores Linux/Apache: imagen 9

Crear un nuevo archivo llamado Web.config en la carpeta del sitio web, con el siguiente contenido:

<?xml version="1.0"?>
<configuration>
  <appSettings/>
  <connectionStrings/>
  <system.web>
    <httpHandlers>
      <add verb="*" path="LanapCaptcha.aspx"
        type="Lanap.BotDetect.CaptchaHandler,
        Lanap.BotDetect"/>
    </httpHandlers>
		
    <sessionState mode="InProc" cookieless="AutoDetect" 
      timeout="20" sessionIDManagerType="
        Lanap.BotDetect.Persistence.CustomSessionIDManager, 
        Lanap.BotDetect" />
   
    <!--
    Set compilation debug="true" to insert debugging
    symbols into the compiled page. Because this
    affects performance, set this value to true only
    during development.
    -->
    <compilation debug="false">
      <assemblies>
       <add assembly="System.Design, Version=2.0.0.0,
         Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
      </assemblies>
    </compilation>
   
    <!--
    The <authentication> section enables configuration
    of the security authentication mode used by
    ASP.NET to identify an incoming user.
    -->
    <authentication mode="None"/>
  </system.web>
</configuration>

Cómo utilizar BotDetect ASP.NET CAPTCHA en servidores Linux/Apache: imagen 10

Cómo utilizar BotDetect ASP.NET CAPTCHA en servidores Linux/Apache: imagen 11

Agregue la siguiente línea a la cabecera del archivo Default.aspx, justo debajo de la directiva <%@Page %>:

<%@ Register Assembly="Lanap.BotDetect"
  Namespace="Lanap.BotDetect" TagPrefix="BotDetect" %>

En el mismo archivo, agregue el siguiente fragmento de código a la estructura en donde quiere mostrar la imagen BotDetect CAPTCHA:

<div id="CaptchaDiv">
  <BotDetect:Captcha ID="SampleCaptcha" runat="server" />
</div>

Cómo utilizar BotDetect ASP.NET CAPTCHA en servidores Linux/Apache: imagen 12

Guarde todos los cambios, y recargue la página en el navegador. Usted verá una imagen CAPTCHA renderizada en su estructura web.

Cómo utilizar BotDetect ASP.NET CAPTCHA en servidores Linux/Apache: imagen 13

Paso 4. Agregar la entrada de validación de usuario BotDetect CAPTCHA

En el archivo Default.aspx, agregar el siguiente fragmento de código a la estructura:

<div id="ValidationDiv">
  <asp:TextBox ID="CodeTextBox" runat="server">
  </asp:TextBox>
  <asp:Button ID="ValidateButton" runat="server"
    Text="Validate" />
  <asp:Label ID="MessageCorrectLabel" runat="server">
  </asp:Label>
  <asp:Label ID="MessageIncorrectLabel" runat="server">
  </asp:Label>
</div>

En el archivo Default.aspx.cs, agregar el siguiente fragmento de código a la definición de clases:

protected void Page_PreRender(object sender, EventArgs e)
{
  /// initial page setup
  if (!IsPostBack)
  {
    /// set control text
    ValidateButton.Text = "Validate";
    MessageCorrectLabel.Text = "Correct!";
    MessageIncorrectLabel.Text = "Incorrect!";
 
    /// these messages are shown only after validation
   MessageCorrectLabel.Visible = false;
    MessageIncorrectLabel.Visible = false;
  }
       
  if (IsPostBack)
  {
    /// validate the input code, and show the appropriate
    /// message
    string code = CodeTextBox.Text.Trim().ToUpper();
       
    if (SampleCaptcha.Validate(code))
    {
      MessageCorrectLabel.Visible = true;
      MessageIncorrectLabel.Visible = false;
    }
    else
    {
      MessageCorrectLabel.Visible = false;
      MessageIncorrectLabel.Visible = true;
    }
 
    CodeTextBox.Text = null;
  }
}

Guarde todos los cambios, y recargue la página en su navegador. Puede entonces probar la validación CAPTCHA en acción.

Cómo utilizar BotDetect ASP.NET CAPTCHA en servidores Linux/Apache: imagen 14

En sitios web de producción usted típicamente cambiará el código de validación para redirigir al usuario al recurso solicitado si esque la validación de CAPTCHA es satisfactoria.

Proyectos de Ejemplo ASP.NET BotDetect CAPTCHA

La instalación de BotDetect CAPTCHA también incluye un número de ejemplos de proyectos de código demostrando como usar BotDetect CAPTCHA. Puede obtener un resultado equivalente a la guía paso-a-paso copiando los archivos de ejemplo de validación BotDetect CAPTCHA a su servidor Linux y publicándolo en Apache usando Mod_Mono en la misma manera descrita arriba.

Versiones Actuales de BotDetect

Advertencia

Esta página es una traducción no oficial de la página original: How To Use BotDetect ASP.NET CAPTCHA on Linux / Apache Servers y puede estar incompleta, incorrecta o poco actualizada.

Última traducción del 2009-12-18. Esto se aplica para los productos BotDetect ASP.NET CAPTCHA v2.0.15 y BotDetect ASP CAPTCHA v2.0.9.

language: English Español Tiếng Việt