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 framwork de Mono
- Paso 2. Crear un nuevo Sitio Web ASP.NET
- Paso 3. Configurar su sitio para usar BotDetect CAPTCHA
- Paso 4. Agregar validación de entrada de BotDetect CAPTCHA
- Muestras de proyectos de BotDetect CAPTCHA ASP.NET
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)
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>
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
{
}
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>
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/
Paso 3. Configurar su sitio para que use BotDetect CAPTCHA
Crear una sub-carpeta llamada bin en la carpeta del sitio web
Copiar el archivo Lanap.BotDetect.dll en la carpeta bien recién creada
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>
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>
Guarde todos los cambios, y recargue la página en el navegador. Usted verá una imagen CAPTCHA renderizada en su estructura web.
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.
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
- BotDetect ASP.NET CAPTCHA v2.0.152009–11–23
- BotDetect ASP CAPTCHA v2.0.92009–02–12
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.



















