BotDetect ASP.NET CAPTCHA Guía de migración

Esta página contiene instrucciones para actualizar su versión de BotDetect ASP.NET CAPTCHA a versiones nuevas.

Actualizando BotDetect ASP.NET CAPTCHA desde v2.0.14 a v2.0.15

La versión 2.0.15 de BotDetect ASP.NET CAPTCHA contiene numerosas correcciones a errores que necesitan cambios adicionales a sólo cambiar los archivos Lanap.BotDetect.dll y Lanap.BotDetect.Troubleshooting.dll a la nueva versión. Para una lista detallada de estos cambios, vea las notas de versión de la v2.0.15.

Actualizando BotDetect ASP.NET CAPTCHA desde v2.0.13 a v2.0.14

La versión 2.0.14 de BotDetect ASP.NET CAPTCHA contiene numerosas correcciones a errores que necesitan cambios adicionales a sólo cambiar el archivo Lanap.BotDetect.dll a la nueva versión. Para una lista detallada de estos cambios, vea las notas de versión de la v2.0.14.

Mejoras en la recarga de CAPTCHA

Cuando actualiza el ensamblado Lanap.BotDetect.dll en sus proyectos a la nueva versión, el botón de recarga del captcha automáticamente comenzará a utilizar la nueva animación que ahora es independiente del lenguaje. Para mejorar la usabilidad del formulario, limpiando el ingreso del Captcha actual, es necesario añadir el siguiente código a la sección des Page_PreRender:

[C#]

// clear user input on Reload button clicks
string scriptTemplate = @"
  function LBD_ClearUserInput() {{
    var LBD_textBox = document.getElementById('{0}');
    if(LBD_textBox) {{
      LBD_textBox.value = '';
    }}
  }}
  LBD_RegisterHandler('PreReloadCaptchaImage', LBD_ClearUserInput);
";
string script = String.Format(scriptTemplate, CodeTextBox.ClientID);
if (!Page.ClientScript.IsStartupScriptRegistered(
    "CaptchaReloadClearInput"))
{
  Page.ClientScript.RegisterStartupScript(this.GetType(), 
    "CaptchaReloadClearInput", script, true);
}
[VB.NET]

' clear user input on Reload button clicks
Dim scriptTemplate As String
scriptTemplate = "function LBD_ClearUserInput() {{" & _
  "  var LBD_textBox = document.getElementById('{0}');" & _
  "  if(LBD_textBox) {{" & _
  "    LBD_textBox.value = '';" & _
  "  }}" & _
  "}}" & _
  "LBD_RegisterHandler('PreReloadCaptchaImage', LBD_ClearUserInput);"

Dim script As String
script = String.Format(scriptTemplate, CodeTextBox.ClientID)
If (Not Page.ClientScript.IsStartupScriptRegistered( _
    "CaptchaReloadClearInput")) Then
  Page.ClientScript.RegisterStartupScript(Me.GetType(), _ 
    "CaptchaReloadClearInput", script, True)
End If

También, debe cambiar el objeto 'CodeTextBox' en el código superior, para ajustarlo al nombre de su cuadro de texto.

Registro de errores del CAPTCHA

BotDetect ha sido actualizado ahora para también registrar intentos de validación en la versión v2.0.14. Para ajustarse a estos cambios, el módulo HttpModule ha sido renombrado desde Lanap.BotDetect.Troubleshooting.ErrorTrackingModule a Lanap.BotDetect.Troubleshooting.LoggingModule.

Cuando se actualiza, aparte de cambiar el archivo de la nueva versión de Lanap.BotDetect.Troubleshooting.dll (v1.0.14), usted también deberá actualizar sus archivos web.config, reemplazando dentro de (<system.web>):

<add type="Lanap.BotDetect.Troubleshooting.ErrorTrackingModule, 
  Lanap.BotDetect.Troubleshooting" name="ErrorTrackingModule" />

con:

<add type="Lanap.BotDetect.Troubleshooting.LoggingModule, 
  Lanap.BotDetect.Troubleshooting" name="LoggingModule" />

y (<system.webServer>):

<remove name="ErrorTrackingModule"/>
<add name="ErrorTrackingModule" preCondition="integratedMode" 
  type="Lanap.BotDetect.Troubleshooting.ErrorTrackingModule, 
    Lanap.BotDetect.Troubleshooting"/>

con:

<remove name="LoggingModule"/>
<add name="LoggingModule" preCondition="integratedMode" 
  type="Lanap.BotDetect.Troubleshooting.LoggingModule, 
    Lanap.BotDetect.Troubleshooting"/>

Si desea saber más sobre esta nueva funcionalidad sobre el registro de validaciones del Captcha, por favor consulte la guía de como registrar intentos de validación con BotDetect ASP.NET CAPTCHA.

Implimentación de ASP.NET MVC CAPTCHA

Hemos hecho más simple implementar nuestro Captcha en aplicaciones ASP.NET MVC, incluyendo en la versión v2.0.14 un ejemplo de uso del BotDetect ASP.NET Captcha con MVC usando un ActionFilterAttribute personalizado.

Para actualizar su aplicación ASP.NET MVC para usar la versión v2.0.14 de BotDetect Captcha debe:

  • Añadir las nuevas versiones de los archivos BotDetectLayout.css y BotDetectScript.js en la subcarpeta Content
  • Añadir CaptchaValidationAttribute desde (.cs o .vb) la carpeta Attributes de su aplicación
  • Modificar la acción "Captcha-protected", añadiendo, en su controlador, el atributo anterior, traspasando el Id del objeto de entrada como el primer parámetro, y el segundo siendo un valor CaptchaId. Por ejemplo, en el ejemplo cambiamos:

    [C#]
    
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Register(string userName, string email, 
      string password, string confirmPassword, string captchaCode)
    {
    [VB.NET]
    
    <AcceptVerbs(HttpVerbs.Post)> _
    Function Register(ByVal userName As String, ByVal email As String, _
      ByVal password As String, ByVal confirmPassword As String, _ 
      ByVal captchaCode As String) As ActionResult

    a:

    [C#]
    
    [AcceptVerbs(HttpVerbs.Post)]
    [CaptchaValidation("captchaCode", "RegistrationCaptcha")]
    public ActionResult Register(string userName, string email, 
      string password, string confirmPassword, string captchaCode)
    {
    [VB.NET]
    		
    <AcceptVerbs(HttpVerbs.Post)> _
    <CaptchaValidation("captchaCode", "RegistrationCaptcha")> _
    Function Register(ByVal userName As String, ByVal email As String, _
      ByVal password As String, ByVal confirmPassword As String, _
      ByVal captchaCode As String) As ActionResult
  • Actualizar las validaciones del controlador, para utilizar la nueva aproximación basada en RouteData. Por ejemplo:

    [C#]
    
    /// Captcha validation
    Lanap.BotDetect.MvcCaptcha captchaInstance = 
      new Lanap.BotDetect.MvcCaptcha("RegistrationCaptcha");
    	
    string captchaInstanceId = 
      Request.Form[captchaInstance.CaptchaIdKey];
    
    // the Captcha is only validated if it was included on the page
    if (!(String.IsNullOrEmpty(captchaInstanceId)))
    {
      if (!(captchaInstance.Validate(captchaCode, captchaInstanceId)))
      {
        ModelState.AddModelError("captchaCode", 
          "The CAPTCHA code was incorrect!");
      }
    }
    		
    [VB.NET]
    
    'Captcha validation
    Dim captchaInstance As Lanap.BotDetect.MvcCaptcha
    Dim captchaInstanceId As String
    
    captchaInstance = New _ 
      Lanap.BotDetect.MvcCaptcha("RegistrationCaptcha")
    
    captchaInstanceId = Request.Form(captchaInstance.CaptchaIdKey)
    
    ' the Captcha is only validated if it was included on the page
    If (Not (String.IsNullOrEmpty(captchaInstanceId))) Then
      If (Not (captchaInstance.Validate(captchaCode, captchaInstanceId))) Then
        ModelState.AddModelError("captchaCode", _ 
          "The CAPTCHA code was incorrect!")
      End If
    End If
    		

    a:

    [C#]
    
    /// Captcha validation
    if (!(bool)this.RouteData.Values["captchaValid"])
    {
      ModelState.AddModelError("captchaCode", 
        "The CAPTCHA code was incorrect!");
    }
    		
    [VB.NET]
    
    'Captcha validation
    If (Not (CType(Me.RouteData.Values("captchaValid"), Boolean))) Then
      ModelState.AddModelError("captchaCode", _
        "The CAPTCHA code was incorrect!")
    End If
  • Si desea mejorar el botón de recarga del Captcha para borrar automáticamente la entrada el usuario es posible añadir un sencillo código. Por ejemplo, en nuestro código usamos:
    <%= Html.Captcha(registrationCaptcha) %gt;
    <p>
      <label for="captchaCode">Type the characters you see in the 
        picture:</label>
      <%= Html.TextBox("captchaCode") %>
      <%= Html.ValidationMessage("captchaCode")%>
    </p>
    <script type="text/javascript">
      function LBD_ClearUserInput() {
        var LBD_textBox = document.getElementById('captchaCode');
        if(LBD_textBox) {
          LBD_textBox.value = '';
        }
      }
      LBD_RegisterHandler('PreReloadCaptchaImage', LBD_ClearUserInput);
    </script>
    <%

Actualizando BotDetect ASP.NET CAPTCHA desde v2.0.12 a v2.0.13

La versión 2.0.13 de BotDetect ASP.NET CAPTCHA contiene numerosas correcciones a errores que necesitan cambios adicionales a sólo cambiar el archivo Lanap.BotDetect.dll a la nueva versión. Para una lista detallada de estos cambios, vea notas de la versión v2.0.13.

Aleatorización del CAPTCHA

Numerosos problemas fueron encontrados con el controlador del evento PreDrawCaptchaImage utilizado para la aleatorización del Captcha. En todas sus páginas, actualice el siguiente código:

[C#]

void SampleCaptcha_PreDrawCaptchaImage(object sender, EventArgs e)
{
  captcha.CodeLength = RandomizationHelper.GetRandomCodeLength(4, 6);
  // other randomizations...
}
[VB.NET]

Protected Sub SampleCaptcha_PreDrawCaptchaImage(ByVal sender As 
  System.Object, ByVal e As System.EventArgs)
  
  captcha.CodeLength = RandomizationHelper.GetRandomCodeLength(4, 6)
  ' other randomizations...
End Sub

a:

[C#]

void SampleCaptcha_PreDrawCaptchaImage(object sender, EventArgs e)
{

  ICaptcha captcha = sender as ICaptcha;
  if (captcha.CaptchaId != SampleCaptcha.CaptchaId)
  {
    return;
  }

  captcha.CodeLength = RandomizationHelper.GetRandomCodeLength(4, 6);
  // other randomizations...
}
[VB.NET]

Protected Sub SampleCaptcha_PreDrawCaptchaImage(ByVal sender As 
  System.Object, ByVal e As System.EventArgs)
	
  Dim captcha As ICaptcha = sender
  If (captcha.CaptchaId <> SampleCaptcha.CaptchaId) Then
    Return
  End If

  captcha.CodeLength = RandomizationHelper.GetRandomCodeLength(4, 6)
  ' other randomizations...
End Sub

Tambien recuerde cambiar SampleCaptcha en el código anterior con el ID del Captcha correspondiente.

Diseño del control del Captcha

Para arreglar los errores en el diseño, cuando existen multiples Captchas en la misma página, todas las declaraciones en el CSS de BotDetect CSS han sido actualizadas para utilizar clases de CSS en vez de usar id CSS. Si por ejemplo tiene problemas con el diseño del captcha, (por ejemplo el botón de recarga del Captcha a la derecha del botón del altavoz en vez de abajo del), actualice el código.

Actualizando BotDetect ASP.NET CAPTCHA desde v2.0.11 a v2.0.12

La versión 2.0.12 de BotDetect ASP.NET CAPTCHA contiene varias soluciones a fallos que solo requieren la actualización del binario Lanap.BotDetect.dll a la nueva versión. Para obtener una lista detallada de cambios incluídos en este lanzamiento, por favor consulte notas de la versión v2.0.12.

Actualizando BotDetect ASP.NET CAPTCHA desde v2.0.10 a v2.0.11

La versión 2.0.11 de BotDetect ASP.NET CAPTCHA introduce varios cambios que requieren su atención cuand actualice desde versiones anteriores. Para obtener una lista detallada de cambios incluídos en este lanzamiento, por favor consulte notas de la versión v2.0.11.

Aleatorización de CAPTCHA

El código usado para aleatorizar el algoritmo de la imágen CAPTCHA, largo del código Captcha etc. ha sido actualizado. En vez de aleatorizar el las propiedades del CAPTCHA en métodos de página (Page_Load, Page_PreRender, etc.), la aleatorización de código debería ser colocada en un nuevo manejador de eventos Captcha_PreDrawCaptchaImage. Puede ver los cámbios del código en el Ejemplo de aletorización de CAPTCHA actualizado que viene con la instalación de BotDetect.

Esto es necesario ya que los gestores de página son únicamente llamados cuando todo el ciclo de página es ejecutado en el servidor, y no en cada ejecución CAPTCHA HttpHandler imagen. Esto significa que la aleatorización de CAPTCHA colocada en métodos de Página es atajada cuando toda la página .aspx es cargada. Por ejemplo, esto sucede cuando se clickea el botón Recargar CAPTCHA, o cuando un un robot accede a la URL del CAPTCHA directamente, sin cargar la página. Actualizando el código de aleatorización se asegurará que las propiedades del CAPTCHA sean aleatorizadas para cada imagen CAPTCHA generada.

CAPTCHA HttpHandler Path

Esta versión de BotDetect incluye la funcionalidad de cambiar el path completo CAPTCHA HttpHandler de solicitud. Se recomienda cambiar este path a un único calor para cada aplicación, ya que esto puede mejorar la seguridad del CAPTCHA.

Por ejemplo, si un robot intentea escanear varios sitios web a través del path por defecto LanapCaptcha.aspx, sería significativamente más difícil reconocer automáticamente su sitio usando la protección de BotDetect CAPTCHA.

Para cambiar el path BotDetect CAPTCHA HttpHandler a CustomCaptchaHandler.ashx (por ejemplo):

  • Agregue las siguietnes líneas a la sección <appSettings> del archivo web.config:

    <appSettings>
      <add key="LBD_RequestPath" value="CustomCaptchaHandler.ashx" />
    </appSettings>
  • Actualice el registro HttpHandler en la sección <system.web> del archivo web.config:

    <httpHandlers>
      <add verb="*" path="CustomCaptchaHandler.ashx" 
        type="Lanap.BotDetect.CaptchaHandler, Lanap.BotDetect"/>
    </httpHandlers>

SharePoint Users

Debido a que el ajuste LBD_RequestExtension ha sido reemplazado por el ajuste LBD_RequestPath en la versión 2.0.11, debería actualizar su ajuste web.config acordemente, reemplazando

<appSettings>
  <add key="LBD_RequestPath" value=".ashx" />
</appSettings>
<web.config>
  <httpHandlers>
    <add verb="*" path="LanapCaptcha.ashx" 
      type="Lanap.BotDetect.CaptchaHandler, Lanap.BotDetect" />
  </httpHandlers>

por

<<appSettings>
  <add key="LBD_RequestPath" value="BotDetectCaptcha.ashx" />
</appSettings>
<web.config>
  <httpHandlers>
    <add verb="*" path="BotDetectCaptcha.ashx" 
      type="Lanap.BotDetect.CaptchaHandler, Lanap.BotDetect" />
  </httpHandlers>

Actualizando BotDetect ASP.NET CAPTCHA desde v2.0.9 a v2.0.10

La versión 2.0.10 del BotDetect ASP.NET CAPTCHA introduce varios cambios que requieren su atención cuando actualice desde versiones anteriores. Para una lista detallada de los cambios incluidos en esta versión, por favor consulte v2.0.10 notas de versión.

Captcha control layout

Debido a que el control de salida Lanap.BotDetect.Captcha ha sido reescrito para producir HTML semántico sin tablas, y la mayoría de las declaraciones de diseño han sido removidas a una hoja de estilos CSS separada, es posible que el control Captcha sea ligeramente diferente dentro de su diseño de página (debería ser unos píxeles más pequeño, etc). Esto es fácilmente corregido ajustando el las declaraciones de estilos CSS de su página.

Botón Recargar CAPTCHA

También debido a que el código de cambio de botón CAPTCHA ha sido agregado al control y está activado por defecto, debería, por ejemplo:

  • Revisar cómo el control cabe horizontalmente dentro de su diseño de página, si no tiene el CAPTCHA auditivo activado. El ícono de recarga está renderizado a la derecha de la imagen CAPTCHA.
  • Si tiene activado el CAPTCHA auditivo y está usando un alto de imagen CAPTCHA menor que 50 píxeles, por favor repase como hacer el que ícono de recarga quepa verticalmente dentro de su diseño vertical de ícono. Si necesita mostrar el íicono de recarga a la derecha del ícono del parlate (en vez de debajo de él), siga las instruccioes de diseño horizontal de ícono.

Usuarios de Ajax ASP.NET

Debido a que la compatibilidad del UpdatePanel está agregada al control Captcha embebido, el mecanismo de solución AjaxCaptcha descrito en el Artículo UpdatePanel FAQ no es más necesario. Mientras esta solución continuará funcionando, ahora es considerada antiguo y se recomenda dejar usarla. Para hacerlo, solo solo revierta los cambios hechos para la solución.

Si también desactivó el CAPTCHA auditivo dentro de un UpdatePanel por problemas de compatibilidad con Firefox, ahora puede activarlo - este era un problema causado por un bug en plugin Quicktime v7.1.6 para Firefox, que está corregido en las versiones posteriores del reproductor.

Usuarios de SharePoint

Versiones anteriores de BotDetect requerían cambios menores en el código de fuente para cambiar la extensión gestora de solicitures CAPTCHA, debido a que SharePoint no permite solicitures .aspx para mapear un HttpHandler que no sea SharePoint. Esto ahora puede ser guardado con la compilación oficial de BotDetect, especificando la extensión preferida a usar en el archivo web.config - por ejemplo:

<appSettings>
  <add key="LBD_RequestPath" value=".ashx" />
</appSettings>
<web.config>
  <httpHandlers>
    <add verb="*" path="LanapCaptcha.ashx" 
      type="Lanap.BotDetect.CaptchaHandler, Lanap.BotDetect" />
  </httpHandlers>

cambiará el sondio del CAPTCHA y la solicitudes de solicitud de imagen a una extensión .ashx. Cuando use diferentes extensiones, no olvide asegurarse que estén mapeadas a ASP.NET Runtime en las propiedades de IIS para el sitio web.

Tenga en cuenta también que hemos publicado instrucciones para creating a SharePoint Web Part with BotDetect CAPTCHA para esta actualización.

Versiones Actuales de BotDetect

Advertencia

Esta página es una traducción no oficial de la página original: BotDetect ASP.NET CAPTCHA Migration Guide 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