Preguntas Frecuentes de BotDetect CAPTCHA ASP
Esta página contiene respuestas a las preguntas más frecuentes relacionadas con la instalación, desarrollo e implementación de BotDetect ASP CAPTCHA.
I. Instalación
- ¿Funcionará BotDetect ASP CAPTCHA bajo ISS 4.0 corriendo en Windows NT?
- ¿BotDetect ASP CAPTCHA puede ser instalado en LOTUS NOTES Domino Server?
- Estoy usando una cuenta de revendedor en un servidor compartido y solo tengo acceso FTP. ¿Necesitaré todos los derechos de administrativos en el servidor para instalar y usar su BotDetect ASP CAPTCHA software?
- ¿Puedo registrar los componentes del Lanapsoft BotDetect ASP CAPTCHA manualmente o tengo que correr el paquete de instalación en mi servidor?
II. Desarrollo
- He comprador la versión complete de BotDetect ASP CAPTCHA. ¿Tendré que reiniciar el ISS? ¿Existe otra manera de actualizar la versión de prueba?
- Estoy tratando de registrar (o registro una nueva versión de) el componente LanapBotDetect.dll. Esta operación fracasa debido a sharing violation error.
- He desinstalado la versión de prueba de BotDetect ASP CAPTCHA e instale la versión completa, pero mi aplicación aun muestra LANAP 50% del tiempo.
- Después de agregar el component BotDetect ASP CATPCHA, El servidor produce Access Error. El componente ha sido instalado con opciones de permisos a Everyone.
- Acabo de instalar BotDetect ASP CAPTCHA en mi windows 2003 server. Todo está funcionando, pero parece que cada vez que una imagen es generada, dos entradas de registro de seguridad buscan el archivo GDIPFONTCACHEV1.DAT, y no estoy seguro de donde se supone que está.
- Hemos desarrollado exitosamente nuestro sitio web desde hace unos meses con control BotDetect ASP CAPTCHA. Sin embargo cuando lo implementamos a nuestro ambiente de producción de carga balanceada, la imagen CAPTCHA ha fallado en ser renderizada alrededor del 50% de las veces.
- ¿LanapBotDetectHandler.asp no tiene que estar en la misma carpeta que la del formulario que lo está usando? Si muevo LanapBotDetectHandler.asp a otra carpeta (como una carpeta include), la validación y el audio CAPTCHA no funcionan. Pareciera que la variable de sesión no es mantenida.
III. Implementación
- ¿Cómo integrar BotDetect CAPTCHA con un formulario FrontPage?
- ¿Podría decirme si BotDetect CAPTCHA puede ser controlado por un script PHP, y tiene algún ejemplo de eso?
- ¿Cuando se configura el componente BotDetect ASP, es fijo el algoritmo CAPTCHA o se puede configurar para que cambie de forma aleatoria?
- Algunos de mis usuarios se quejan que la en CAPTCHA es siempre la misma. ¿Cómo forzar a que la pagina ASP vuelva a cargar la imagen CAPTCHA desde el servidor y no desde el cache del navegador?
- La imagen BotDetect CAPTCHA se muestra correctamente en mi página, pero el formulario ASP es enviado independientemente del código CAPTCHA ingresado.
- Mientras leía el código de LanapBotDetectHandler.asp proporcionado con la versión de prueba de BotDetect CAPTCHA, he notado que usan variables Session para mantener el código CAPTCHA. ¿Es posible hacer esto con algún otro método o está limitado a las variables ASP Session?.
- He tenido problemas con BotDetect CAPTCHA en mi sitio – muchos de los sonidos CAPTCHA no concuerdan con las imágenes CAPTCHA y la validación CAPTCHA a menudo falla. Al parecer funciona bien cuando se tiene un solo formulario en el sitio web, pero cuando cargo todos los formularios, comienzan los problemas. ¿tienen algún código de ejemplo para protección CAPTCHA de múltiples formularios ASP?
- Al parecer hay un problema con BotDetect CAPTCHA al usar el botón de retroceso. Cuando vuelvo a la protección CAPTCHA del formulario ASP usando el botón de retroceso, una nueva imagen CAPTCHA es mostrada en IE7, mientras que en Firefox 2.0 la imagen CAPTCHA continua siendo la misma. He añadido un temporizador en la consulta de la imagen CAPTCHA, como sea, tampoco fuerza a Firefox a pedir otra imagen, ¿tienen alguna idea?
- Quiero hacer la validación CAPTCHA en el lado del cliente sin hacer postback. ¿tienen alguna sugerencia?
- Tengo un formulario con varios campos protegidos por BotDetect CAPTCHA y, cuando los usuarios ingresan el código CAPTCHA correcto pero la validación del lado del servidor de los otros campos falla, están mostrando otra imagen captcha con un código diferente. ¿Hay una manera de mostrar el mismo CAPTCHA y mantener el código ingresado, enteonces no tendrían que resolver más de un CAPTCHA solo porque fallaron en otro campo?
I. Instalación
¿Funcionará BotDetect ASP CAPTCHA bajo ISS 4.0 corriendo en Windows NT?
No, los requerimientos mínimos para BotDetect ASP CAPTCHA es una plataforma Windows 2000 and IIS 5.0.
¿BotDetect ASP CAPTCHA puede ser instalado en LOTUS NOTES Domino Server?
No, nuestro producto requiere IIS 5.0+ en orden para correr apropiadamente.
¿Puedo registrar los componentes del Lanapsoft BotDetect ASP CAPTCHA manualmente o tengo que correr el paquete de instalación en mi servidor?
No es necesario correr el paquete de instalación. Usted puede simplemente copiar LanapBotDetect.dll y gdiplus.dll en la misma carpeta donde quiera en el servidor (por ejemplo, C:\Temp\) y luego ejecutar la siguiente línea de comando:
regsvr32 /i "C:\Temp\LanapBotDetect.dll"
II. Desarrollo
He comprador la versión complete de BotDetect ASP CAPTCHA. ¿Tendré que reiniciar el ISS? ¿Existe otra manera de actualizar la versión de prueba?s
Estoy tratando de registrar (o registro una nueva versión de) el componente LanapBotDetect.dll. Esta operación fracasa debido a sharing violation error.
Usted necesita reiniciar el IIS antes de registrar la nueva versión de BotDetect porque es la única manera de que el IIS libere el handle LanapBotDetect.dll. Desafortunadamente, no hay solución – es parte del comportamiento del IIS “de diseño”.
Aquí está el procedimiento paso a paso:
- Copiar la versión completa de LanapBotDetect.dll al servidor
- Detener IIS
- Registrar la versión completa de LanapBotDetect.dll con la herramienta regsvr32.exe.
- Iniciar IIS
He desinstalado la versión de prueba de BotDetect ASP CAPTCHA e instale la versión completa, pero mi aplicación aun muestra LANAP 50% del tiempo.
Usted sigue usando la versión de prueba de BotDetect.
Registrar de nuevo LanapBotDetect.dll con la utilidad regsvr32.exe. Por favor revisar que esta sea la versión completa. Usted puede hacer esto haciendo click derecho en su Windows Explorer y seleccionar Properties, y cambiar a la pestaña Version y revisar la Description; como se muestra en la imagen:

Después de agregar el component BotDetect ASP CATPCHA, El servidor produce Access Error. El componente ha sido instalado con opciones de permisos a Everyone.
Aquí están los detalles del error:
Server object error 'ASP 0178 : 80070005' Server.CreateObject Access Error LanapBotDetectHandler.asp, line 8 The call to Server.CreateObject failed while checking permissions. Access is denied to this object.
Para resolver este problema, asignar a LanapBotDetect.dll propiedades NTFS de lectura y ejecución con permisos apropiados para la cuenta de usuario (IUSR_<machinename>, NETWORK SERVICE). Click derecho a LanapBotDetect.dll, seleccionar Propiedades, cambiar a la pestaña de seguridad y cambiar los permisos.
Este error es muy similar a: http://support.microsoft.com/default.aspx?scid=KB;en-us;q278013.
Acabo de instalar BotDetect ASP CAPTCHA en mi windows 2003 server. Todo está funcionando, pero parece que cada vez que una imagen es generada, dos entradas de registro de seguridad buscan el archivo GDIPFONTCACHEV1.DAT, y no estoy seguro de donde se supone que está.
Aquí están los detalles del error:
Object Open:
Object Server: Security
Object Type: File
Object Name: C:\GDIPFONTCACHEV1.DAT
Handle ID: -
Operation ID: {0,174293}
Process ID: 2120
Image File Name: C:\WINDOWS\system32\inetsrv\w3wp.exe
Primary User Name: NETWORK SERVICE
Primary Domain: NT AUTHORITY
Primary Logon ID: (0x0,0x3E4)
Client User Name: IUSR_CAMOBAP01
Client Domain: CAMOBAP01
Client Logon ID: (0x0,0x2A0F3)
Accesses: READ_CONTROL
SYNCHRONIZE
ReadData (or ListDirectory)
WriteData (or AddFile)
AppendData (or AddSubdirectory or
CreatePipeInstance)
ReadEA
WriteEA
ReadAttributes
WriteAttributes
Privileges: -
Restricted Sid Count: 0
Access Mask: 0x12019F
Este problema es caudado por GDI+ intentando escribir el archivo temporal gdipfontcachev1.dat (un cache de fuentes para imprimir) a una carpeta que no tiene permisos para hacerlo. Desde gdiplus.dll que es cargado desde LanapBotDetect.dll, que a su vez está cargado por IIS (es decir w3wp.exe), GDI+ corre bajo una cuenta de usuario con permisos limitados.
Desafortunadamente, no hemos sido capaces de encontrar una opción de configuración para impedir que intente escribir este archivo, o instrucciones para que lo escriba en una ubicación especifica. Las buenas noticias son que aparentemente necesita escribir este archivo solo una vez. Así que aquí tenemos una solución al problema:
- Temporalmente dar acceso total a “Todos” a la unidad C:\.
- Correr la pagina web y esperar que GDI+ cree el archivo en la raíz de la unidad C:\.
- Copiar el archivo en la carpeta C:\Windows\System32 y cambiar los permisos solo en el archivo para Modify por Everyone.
- Borrar el archivo C:\gdipfontcachev1.dat y quitar acceso a Everyone a C:\.
- El error debería dejar de ocurrir.
Hemos desarrollado exitosamente nuestro sitio web desde hace unos meses con control BotDetect ASP CAPTCHA. Sin embargo cuando lo implementamos a nuestro ambiente de producción de carga balanceada, la imagen CAPTCHA ha fallado en ser renderizada alrededor del 50% de las veces.
Al utilizar los servidores de carga balanceada, usted debería garantizar que los clientes que vuelven al servidor contengas una Sesión con todos los datos de la consulta HTTP después de la primera (conocido como sticky connections). Por favor revisar las configuraciones de su balance de carga.
Este paso es necesario puesto que el estado de la sesión del ASP se mantiene siempre la memoria del proceso del trabajador, que existe solamente en el servidor adonde cada proceso individual del trabajador está funcionando, y no puede ser compartido entre los servidores multiples.
¿LanapBotDetectHandler.asp no tiene que estar en la misma carpeta que la del formulario que lo está usando? Si muevo LanapBotDetectHandler.asp a otra carpeta (como una carpeta include), la validación y el audio CAPTCHA no funcionan. Pareciera que la variable de sesión no es mantenida.
La solución más simple es manteniendo el archivo LanapBotDetectHandler.asp en la misma carpeta que el formulario .asp. Es posible mantener una sola copia de LanapBotDetectHandler.asp y utilizarla en múltiples formularios, mientras esos formularios estén todos dentro de la misma aplicación.
Cada carpeta virtual IIS que tiene un eso separado de la aplicación ASP bajo el archivoGlobal.asa y tiene estado propio separado de la aplicación y el estado de sesión. Por ejemplo, usted debe poder mover el archivo manipulador desde:
http://localhost/BotDetectASPSamples/CaptchaFeatures/ LanapBotDetectHandler.asp
a
http://localhost/BotDetectASPSamples/LanapBotDetectHandler.asp
y continuar usándolo en el formulario
http://localhost/BotDetectASPSamples/CaptchaFeatures/ BotDetectFeaturesDemo.asp
puesto que http://localhost/BotDetectASPSamples/ es la aplicación, mientras que CaptchaFeatures/ y CaptchaValidation/ son simplemente subcarpetas y no aplicaciones separadas.
Sin embargo, usted no puede utilizar el manipular desde esa localización fuera de la aplicación http://localhost/BotDetectASPSamples/, o aún si usted hace uso separado fuera de las subcarpetas CaptchaFeatures/ y CaptchaValidation/.
III. Implementación
¿Cómo integrar BotDetect CAPTCHA con un formulario FrontPage?
Usted puede utilizar Frontpage mientras utiliza ASP o PHP para procesar el formulario. Los formularios simples que usa FrontPage Server Extensions no son soportadas.
¿Podría decirme si BotDetect CAPTCHA puede ser controlado por un script PHP, y tiene algún ejemplo de eso?
Si, BotDetect CAPTCHA puede ser integrado en paginas PHP. Pero solamente en servidores corriendo en Windows (puesto que es un componente COM). Puede encontrar instrucciones detalladas y códigos de ejemplo en la guía Añadir la protección de BotDetect CAPTCHA usando PHP.
¿Cuando se configura el componente BotDetect ASP, es fijo el algoritmo CAPTCHA o se puede configurar para que cambie de forma aleatoria?
Usted puede cambiar los valores de BotDetect CAPTCHA para que tenga valores aleatorios con facilidad. Aquí hay un fragmento de código de ejemplo ASP que elige un CAPTCHA al azar que rige el algoritmo con los siguientes posibles valores:
<% Function RandomFromRange(lowerLimit, upperLimit) Dim num Randomize num = CInt((upperlimit - lowerlimit)*Rnd() + lowerlimit) RandomFromRange = num End Function Function RandomFromValues(values) Dim num Randomize num = RandomFromRange(0, UBound(values)) RandomFromValues = values(num) End Function Dim algorithms(5) algorithms(0) = 28 'Lego algorithms(1) = 36 'MeltingHeat algorithms(2) = 44 'Ghostly algorithms(3) = 25 'FingerPrints algorithms(4) = 39 'Graffiti2 algorithms(5) = 48 'Bullets ' choose a random TextStyle Dim style style = RandomFromValues(algorithms) %> <img src= "LanapBotDetectHandler.asp?Command= CreateImage&TextStyle=<%=style%>" alt="CAPTCHA image" />
Algunos de mis usuarios se quejan que la en CAPTCHA es siempre la misma. ¿Cómo forzar a que la pagina ASP vuelva a cargar la imagen CAPTCHA desde el servidor y no desde el cache del navegador?
Usted puede forzar que la imagen CAPTCHA sea recargada desde el servidor en vez de cargarlo desde el cache del navegador agregando caducidad a la imagen CAPTCHA con la siguiente instrucción Url:
<img src="LanapBotDetectHandler.asp?Command=CreateImage&t=
<%= year(now) & right("0" & month(now),2) & _
right("0" & day(now),2) & right("0" & hour(now),2) & _
right("0" & minute(now),2) & right("0" & second(now),2)
%>"
alt="CAPTCHA image" />
La imagen BotDetect CAPTCHA se muestra correctamente en mi página, pero el formulario ASP es enviado independientemente del código CAPTCHA ingresado.
Usted probablemente ha olvidado incluir el código de validación del script ASP CAPTCHA que procesa los datos enviados desde el formulario. Puede ver fragmentos de ejemplo del código de validación CAPTCHA en la guía Añadir la protección de BotDetect CAPTCHA usando ASP.
También, puede ser que quiera mirar el Ejemplo de validación de código con BotDetect CAPTCHA que viene con el instalador de BotDetect.Observe que el código en ProcessingFormDemo.asp es apenas está utilizado para generar imágenes de CAPTCHA. La validación ingresada por el usuario – es decir. comprobando que el usuario ingrese el mismo código que se exhibido en la imagen de CAPTCHA – sucede en el script el procesamiento de los datos. Llamado ProcessForm.asp.
Mientras leía el código de LanapBotDetectHandler.asp proporcionado con la versión de prueba de BotDetect CAPTCHA, he notado que usan variables Session para mantener el código CAPTCHA. ¿Es posible hacer esto con algún otro método o está limitado a las variables ASP Session?.
No, usted puede mantener código del CAPTCHA en el lado del servidor usando LanapBotDetectHandler.asp construido en ASP con estados de sesión por simplicidad, pero siéntase en libertar de reemplazarlo con su propio método (por ejemplo, bases de datos para mantener compartida la permanencia ente multiples servidores de carga balanceada).
He tenido problemas con BotDetect CAPTCHA en mi sitio – muchos de los sonidos CAPTCHA no concuerdan con las imágenes CAPTCHA y la validación CAPTCHA a menudo falla. Al parecer funciona bien cuando se tiene un solo formulario en el sitio web, pero cuando cargo todos los formularios, comienzan los problemas. ¿tienen algún código de ejemplo para protección CAPTCHA de múltiples formularios ASP?
Explicación
Cómo los códigos de BotDetect CAPTCHA son almacenados en variables de estado de la sesión de ASP en el servidor, hay algunos problemas con las diferentes páginas que necesitan acceder a esta información, en la misma aplicación.
El problema generalmente ocurre cuando se abren múltiples pestañas de la misma aplicación que usa CAPTCHA para proteger páginas sensibles, así la última pestaña escribe un código inválido para las anteriores.
Solución
Para utilizar BotDetect CAPTCHA evitando este problema, es necesario realizar ciertas modificaciones al código ASP.
- Reemplace el archivo LanapBotDetectHandler.asp de su sitio, por el incluído en la versión BotDetect ASP v2.0.8.
- Para cada formulario de su sitio, debe decidir si usará un identificador único de CAPTCHA – por ejemplo, si tiene un CAPTCHA en sus páginas de registro y contacto llámelos RegistrationCaptcha y ContactCaptcha.
-
En cada formulario ASP, modifique el CAPTCHA para mostrar el código respectivo – en la imagen y sonido debe existir un CaptchaId en la consulta, en donde se usará el nombre establecido en el paso anterior. Por ejemplo debe cambiar:
<img id="CaptchaImage" alt="CAPTCHA Code" src="LanapBotDetectHandler.asp?Command=CreateImage" />
por
<img id="CaptchaImage" alt="CAPTCHA Code" src="LanapBotDetectHandler.asp?Command=CreateImage &CaptchaId=RegistrationCaptcha" />y
<a href="LanapBotDetectHandler.asp?Command=CreateSound" onclick="LBD_LoadSound('soundPlaceholder', 'LanapBotDetectHandler.asp?Command=CreateSound'); return false;" title="Play CAPTCHA audio">por
<a href="LanapBotDetectHandler.asp?Command=CreateSound &CaptchaId=RegistrationCaptcha" onclick="LBD_LoadSound('soundPlaceholder', 'LanapBotDetectHandler.asp?Command=CreateSound&CaptchaId= RegistrationCaptcha'); return false;" title="Play CAPTCHA audio"> -
En cada formulario, modifique la validación del código para usar el valor de CaptchaId en la variable de sesión: LanapBotDetectCode así, deberá ser LanapBotDetectCode_<CaptchaId>. Por ejemplo debe cambiar:
Dim result, codeKey, inputCode result = False codeKey = "LanapBotDetectCode" inputCode = Request("CaptchaCode") If (Session(codeKey)<>"") Then code = Session(codeKey) result = (0 = StrComp(inputCode, code, 1)) 'each Captcha code can only be validated once Session(codeKey) = "" End Ifa
Dim result, codeKey, inputCode result = False codeKey = "LanapBotDetectCode_RegistrationCaptcha" inputCode = Request("CaptchaCode") If (Session(codeKey)<>"") Then code = Session(codeKey) result = (0 = StrComp(inputCode, code, 1)) 'each Captcha code can only be validated once Session(codeKey) = "" End If
Cuando haga estos cambios, ya no existirá el problema del reemplazo y colisiones del código CAPTCHA almacenado en las variables de sesión.
Pasos futuros
Aunque estos cambios previenen el problema que ocurre con el código del CAPTCHA al usar varias pestañas con CAPTCHAs diferentes del mismo sitio, no solucionan el problema que puede ocurrir cuando se abre la misma página con el mismo formulario que contiene el CAPTCHA.
Para ahora, resolver este nuevo problema, podemos incluir un registro de tiempo o algún código a nuestro CaptchaId, para distinguir entre pestañas del mismo formulario.
Adicionalmente, tendríamos que mantener de alguna forma (por ejemplo en un campo oculto) aquel código nuevo generado, para que podemos traspasar esta información entre formularios.
Al parecer hay un problema con BotDetect CAPTCHA al usar el botón de retroceso. Cuando vuelvo a la protección CAPTCHA del formulario ASP usando el botón de retroceso, una nueva imagen CAPTCHA es mostrada en IE7, mientras que en Firefox 2.0 la imagen CAPTCHA continua siendo la misma. He añadido un temporizador en la consulta de la imagen CAPTCHA, como sea, tampoco fuerza a Firefox a pedir otra imagen, ¿tienen alguna idea?
Desde el comportamiento del browser detrás del botón de retroceso no está especificado por ningún estándar, distintos navegadores lo implementan distintamente. Para forzar a Firefox a cambiar la imagen del CAPTCHA, usted debe realizar los cambios siguientes:
-
Asegúrese que está usando BotDetect ASP CAPTCHA v2.0.8 ó alguno más reciente, desde esta versión se incluyen los cambios requeríos por las cabeceras de la respuesta HTTP de la imagen de BotDetect CAPTCHA desde
Response.CacheControl = "no-cache"
a
Response.CacheControl = "no-cache, no-store, must-revalidate"
-
Edite la página ASP que muestra la imagen CAPTCHA, añadiendo el siguiente código al tope del código ASP:
<% 'prevent caching of the whole page Response.CacheControl = "no-cache, no-store, must-revalidate" Response.AddHeader "Pragma", "no-cache" Response.Expires = -1 'utility function for querystring-friendly GUID generation Function createGuid() Set TypeLib = Server.CreateObject("Scriptlet.TypeLib") tg = TypeLib.Guid guid = Left(tg, len(tg)-2) set regEx = New RegExp regEx.IgnoreCase = False regEx.Global = True regEx.Pattern = "[{}-]" createGuid = regEx.Replace(guid, "") Set TypeLib = Nothing End Function %> -
Edite código de la imagen CAPTCHA incluido, por ejemplo
<img id="CaptchaImage" alt="CAPTCHA Code" src="LanapBotDetectHandler.asp?Command=CreateImage &TextStyle=0&ImageWidth=250&imageHeight=50&CodeLength=5 &CodeType=0" />queda
<img id="CaptchaImage" alt="CAPTCHA Code" src="LanapBotDetectHandler.asp?Command=CreateImage &TextStyle=0&ImageWidth=250&imageHeight=50&CodeLength=5 &CodeType=0&t=<%=createGuid()%>" />
En vez de usar un tiempo de vencimiento, este código utiliza un GUID para asegurar que cada página cargada use un CAPTCHA diferente.
También, es necesario prevenir almacenar la página entera, puesto que Firefox cargará de otra manera la página desde el cache al usar el botón de retroseso, y la imagen de CAPTCHA seguirá siendo igual, quedando otra vez la vieja imagen.
Solamente después de realizar estos cambios Firefox cargara una nueva imagen CAPTCHA al usar el botón de retroceso.
Quiero hacer la validación CAPTCHA en el lado del cliente sin hacer postback. ¿tienen alguna sugerencia?
Para evitar multiples postbacks, es recomendable que vea el ejemplo de validación por Ajax con BotDetect CAPTCHA, que usa peticiones jQuery para enviar sólo la información necesaria para validar temporalmente el ingreso.
Problemas con validaciones de CAPTCHA por lado del cliente
Cuando usamos validaciones por lado del cliente de forma exclusiva y única (sin comunicarnos con el servidor), caemos en un esquema fácil de romper por robots, con muchos puntos débiles y situaciones problemáticas que de igual forma necesitan otra validación. Por ejemplo:
- Registrar comentarios sólo en caso de que el usuario haya pasado el CAPTCHA.
- Al ser una validación del lado del cliente, supuestamente con JAvascript deberemos enviar los comentarios del cliente al servidor en caso de un código CAPTCHA correcto.
- De esta forma, el robot o persona que quiera enviar comentarios basura o spam, sólo necesita resolver un código CAPTCHA, y luego enviar masivamente los comentarios por medio de una consulta POST.
- Después de eso, puede simular el comportamiento completo de la validación y transgredir la seguridad del CAPTCHA completamente.
- Lo que puede hacer desde la parte del servidor, es validar los ingresos, anulando los comentarios inválidos o repetidos..
- Pero el gran problema es que del lado del cliente los robots siempre podrán tener acceso al código y validar el CAPTCHA correctamente.
Los detalles dependen en sus propios casos de uso del CAPTCHA, pero escencialmente, todo el código del lado del cliente es inseguro y puede ser simulado o falseado completamente. Como consecuencia, el CAPTCHA debe ser siempre finalmente validado en el servidor.
Validación por lado del servidor - La solución
Para evitar la multitud de postbacks, es recomendable utilizar jQuery o alguna otra librería similar de Ajax para hacer validaciones de forma asincrónica:
- Cuando la validación del CAPTCHA falla, puede mostrar un mensaje o imagen de error sin afectar la totalidad de la página, mejorando la usabilidad de la misma y la experiencia del usuario con ella.
- Es necesario cambiar siempre el código CAPTCHA, pues aplicar algoritmos de reconocimiento de caracteres (OCR) constantemente a la misma cadena de código puede ayudar a su reconocimiento automatizado.
- Cuando la validación es satisfactoria, el código se envía nuevamente al servidor para ser validado finalmente.
- Sólo luego de este proceso de doble validación, primero del cliente por Ajax y luego del servidor, es posible acceder a la operación "protegida", como por ejemplo ingresar un comentario a su sitio.
Tengo un formulario con varios campos protegidos por BotDetect CAPTCHA y, cuando los usuarios ingresan el código CAPTCHA correcto pero la validación del lado del servidor de los otros campos falla, están mostrando otra imagen captcha con un código diferente. ¿Hay una manera de mostrar el mismo CAPTCHA y mantener el código ingresado, enteonces no tendrían que resolver más de un CAPTCHA solo porque fallaron en otro campo?
Si los usuarios ingresan un código CAPTCHA correcto pero, por ejemplo, falla la validacion de usuario, no deberían tener que resolver ningún otro CAPTCHA. El proósito del CAPTCHA es asegurarse que el usuario es humano, cuando resuelvan satisfactoriamente la primera vez pasarán el test.
Si tiene que retornarlos al formulario porque algún campo es incorrecto, lo mejor es no mostrarles el CAPTCHA, debido a que el propósito ha sido cumplido. La manera más simple de recordar que el usuario ha resuelto el CAPTCHA satisfactoriamente es guardar el resultado de lado del servidor, por ejemplo:
<%
'Captcha validation
Dim result, codeKey, inputCode
result = False
codeKey = "LanapBotDetectCode"
inputCode = Request("CaptchaCode")
If (Session(codeKey)<>"") Then
code = Session(codeKey)
result = (0 = StrComp(inputCode, code, 1))
'each Captcha code can only be validated once
Session(codeKey) = ""
End If
Session("isHuman") = result
Entonces el valor es verificado antes de mostrar el CAPTCHA al usuario, y el CAPTCHA es únicamente mostrado si no ha sido resuelto:
<% If (Not(Session("isHuman")<>"" And Session("isHuman"))) Then %>
'show the Captcha image and textbox only if not solved already
<div id="PromptDiv">Retype the code from the picture</div>
<div id="CaptchaDiv">
<div id="CaptchaImage">
<img id="SampleForm_CaptchaImage"
src="LanapBotDetectHandler.asp?Command=CreateImage"
alt="CAPTCHA Code Image" />
</div>
'...
<% End If %>
Por razones de seguridad, no es posible conseguir la misma imagen BotDetect CAPTCHA en dos cargas de página, no usar el mismo código para más de una imagen CAPTCHA.
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: BotDetect ASP CAPTCHA FAQ 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.





