Burdjia

Categoría Web, 27 entrada(s)

Feed Rss, Atom

Cómo hacer un sistema CAPTCHA propio

Mis dos webs tienen sendos formularios con los cuales cualquiera puede enviarme un mensaje.  El funcionamiento es muy sencillo:  cuando el servidor recibe el mensaje, comprueba que contiene todos los datos y que hay un correo correctamente indicado, y acto seguido me envía un mensaje con todo.  Pero claro, fue poner en marcha estos formularios y empecé a recibir SPAM.  Bueno, inicialmente recibí varios intentos de juankeo (estoy seguro de haber escrito algo sobre dar las gracias a los piratas turcos por poner a prueba la web, pero ahora no lo encuentro), el SPAM tardó un poquito en llegar, pero llegó.

La solución de añadir un CAPTCHA la barajé desde el principio, pero no me apetecía tener que meter una biblioteca de terceros ya que podía complicar las cosas.  No uso un framework al uso ni ninguna biblioteca extra, así que tendría que instalarlo y configurarlo y hacer pruebas y… paso.

Pero hace cosa de un mes hice un trámite para la TSS y me encontré con un sistema a priori muy simple pero ingenioso.  La página te presenta una lista de palabras y tienes que escribir en un campo aquella que pertenece a una categoría concreta.  Esto me recordó, también, a la pregunta de seguridad de la wiki de Free Pascal, la cual pregunta por el resultado de ejecutar una instrucción Pascal.  Así que me decidí, finalmente, a programarlo.

Cómo funciona

Primero, tenemos una tabla con dos campos:  Palabras y Categorías.  Cada palabra tiene una única categoría y no debe haber ambigüedades, lo cual limita un poco el número de palabras pero facilita las cosas luego.

Cuando se genera el formulario, se selecciona una palabra de forma aleatoriamente, que será la respuesta.  Luego se seleccionan otras tres que pertenezcan a una categoría distinta a la seleccionada.  A continuación creo un código hash combinando la palabra de respuesta con la fecha POSIX para tenerla con referencia y almaceno la palabra de respuesta junto con el hash y la fecha.  Finalmente se genera el formulario mostrando todas las palabras, desordenadas, y la pregunta, con el hash en un campo oculto.

Cuando se recibe el formulario, se eliminan del almacén todas las respuestas viejas para que no se acumulen y se comprueba si la respuesta enviada es correcta.  Si no lo es, se genera otro hash diferente.

Podéis probarlo vosotros mismos.

El resultado

Sé que el sistema no es perfecto, y seguramente que algún bot sería capaz de romperlo con facilidad, sin embargo desde que está activo he dejado de recibir SPAM.  ¿Por cuánto tiempo?  Pues no lo sé.

De todas formas me parece bastante absurdo que me envíen SPAM cuando es más que evidente que tiene un retorno del 0%.  Incluso cuando lo recibía, no lo leía, porque era fácilmente identificable: en el asunto se limitaban a poner una cadena de caracteres aleatoria.

En conclusión, ha sido muy fácil quitarse esta molestia de encima, así que si tienes este problema de SPAM no quites el formulario, símplemente añade un CAPTCHA, aunque sea simple como el mío, y asunto arreglado.

Etiquetas: Seguridad

Categorías: Artículos, Mantenimiento web, Programación, Web

Malas formas en la web

He recibido, a través del formulario de contacto de la web, un mensaje anónimo llamándome cobarde porque en la web no tengo nada sobre Lazarus (cuando Burdjia Components está diseñado especialmente para él) pero uso su foro.

La verdad es que no entiendo por qué me llama cobarde, y me molesta que lo haga sin decir quién es ni dar oportunidad de réplica.  Eso sí me parece cobarde.

He revisado la bitácora y, aparte de que llevo más de un año sin escribir nada por razones que no voy a contar por personales, tiene razón en que no hay mucho referente al proyecto Lazarus.  La etiqueta Lazarus sólo tiene un artículo (ahora dos) que además no tiene mucha relación con el IDE de Pascal.  Sin embargo la etiqueta Pascal tiene 20 artículos.

Esto me ha hecho pensar.  Como he dicho, llevo mucho sin escribir en la bitácora, y no es por falta de conocimientos ni ganas.  Digamos que este mensaje ha sido un rebulsivo, el empuje que necesibata para terminar de decidirme a continuar con la bitácora (como ya llevo un tiempo haciendo con otro proyecto).  Claro que tampoco voy a prometer nada, que me conozco, pero algo escribiré.

Aun así, está muy feo eso de acusar a alguien de algo amparado en el anonimato de Internet.

Notas al pie:

La lista de etiquetas está más abajo (lo que me recuerda el desbarajuste del diseño de páginas de la bitácora) pero usa este enlace para que no tengas que buscar.

Aquí

Etiquetas: Lazarus

Categorías: Artículos, Opinión, Web

Planificando Gesbit 3.0

Ya sé que este proyecto parece el Guadiana, que aparece y desaparece, pero es lo que pasa cuando el tempo libre escasea y hay que repartirlo entre vida social, aficiones y proyectos varios.

Esta vuelta al proyecto será algo más larga que las anteriores principalmente por necesidad.  Resulta que me puse a reparar el estilo y las plantillas de este blog y descubrí que Gesbit no funciona en mi servidor local de purebas porque tengo instalado PHP 7 y Gesbit utiliza varias bibliotecas que ya no están disponibles en esta versión.  Podría ser algo fácil de arreglar, quizá un poco más o menos que el problema con preg_replace pero teniendo en cuenta que al menos una de las cosas que no funciona es la conexión con la base de datos y la cosa sólo puede ir a peor, casi que prefiero no arriesgarme a intentar arreglarlo para descubrir que hay más cosas que no funcionan (y seguramente será así).

Por tanto, en vez de ir al rebufo lo mejor es tirar para delante.  Ya tengo buena parte de los requisitos y carencias localizadas y redactadas (mucho hace ya tiempo), pero no empezaré a escribir código pronto.  Además de terminar de redactar y concretar estos requisitos tengo que hacer unos cuantos esquemas e indagaciones, de lo contrario no conseguiré que funcione.

Etiquetas: PHP

Categorías: Gesbit, Proyectos, Web

Pensando en el siguiente paso

Ayer estuve revisando una extensión para Gesbit que facilita la inserción de vídeos en los artículos, para el blog de El Saloncito del Cómic, y probando añadir algunos elementos HTML5 a uno de los formularios del panel de control de dicho gestor de blogs.

La cuestión es que creo que ha llegado uno de esos momentos en los que hay que decidir.  Como ya dije en en algún artículo anterior, la versión 3.0 entraba en mis planes desde que rescaté el proyecto,  Sin embargo estoy posponiéndolo mientras se pueda mejorar la versión actual.  Aun así hay carencias que son difícilmente mejorables sin arriesgarse a romper por completo el código actual, como es el que sólo permita el uso de bases de datos MySQL/MaríaDB, o que el filtro HTML identifique algunas etiquetas HTML5 como no deseadas, independientemente de lo que se ponga en la configuración, además de algunas incomodidades que no impiden que las bitácoras funcionen mal, pero hacen que no sea cómodo de utilizar y actualizar (esto último, no sólo se refiere a actualizar entradas sino también a la modificación del código fuente).  Por ejemplo, si Gesbit dispusiera de un sistema que permitiera añadir fotografías con la misma facilidad que vídeos seguramente pospondría aún más el inicio de esta versión 3.0, y aunque podría intentar añadir una extensión al efecto creo que esta característica sería más eficiente si formara parte del núcleo del gestor y no como un añadido.

Así que, visto lo visto, seguramente cree una nueva rama de desarrollo y comience la planificación y desarrollo del núcleo de esta nueva versión 3.0 de Gesbit.

Categorías: Gesbit, Programación, Proyectos, Web

¿Sirven las "cookies" de algo?

Desde hace un tiempo somos más conscientes de su existencia, porque en cualquier página en la que entras (salvo las que yo he creado, al parecer) te aparece un molesto mensaje indicando que se usan. Y digo molesto porque normalmente ocupan parte de la página, y en alguna ocasión me he encontrado con que no hay un botón que permita quitar el aviso. Me estoy refiriendo a las huellas o cookies.

La respuesta a si sirven de algo debería ser Sí, claro que sí, pero si he de ser sincero, no estoy yo muy seguro. Y no porque no crea que sean útiles, porque lo son, sino más bien por el uso que se les da normalemente. Según rezan muchos de esos mensajes, sirven (...) para mejorar la experiencia de usuario. ¿De qué forma podrían hacerlo? Bueno, las huellas son contenedores de datos que se almacenan en el ordenador cliente (es decir, en nuestro ordenador), frente a las variables de sesión, que se almacenan en el ordenador servidor (es decir, en el que está almacenada la web que visitamos). De esta forma, los programas pueden consultar información sobre el visitante sin tener que ocupar espacio en el servidor. Esta información puede ser muy variada: la fecha de la visita, qué página fue la última que visitó, qué búsquedas realizó... Cualquier cosa.

Si tenemos una tienda online, las huellas nos ayudan muchísimo. El programa puede tener la lista de artículos consultados y de esta forma deducir qué otros artículos puede recomendar. De hecho, esto es lo que se supone que hace GoogleAds, que se encarga de meternos anuncios en todo tipo de webs alrededor del orbe. Es decir, cuando una web es cargada, esta hace una petición a Google Ads para obtener un anuncio, y este mira en las huellas disponibles para decidir qué anuncio poner. Así, se supone que si hemos comprado cierto producto GoogleAds lo sabrá y no repetirá ese anuncio una y otra vez, pero mostrará otros productos que, según ciertas esotéricas fórmulas antroposociológicas, deberían interesarte.

Por desgracia, esto rara vez funciona. Y a las pruebas me remito:

Chaval de la mochila

Algo marcha mal, ¿no? Bueno, la verdad es que hay varias posibles razones por las que GoogleAds podría equivocarse. La configuración del navegador, que borra los datos de forma periódica o no permite a la aplicación a acceder a esas huellas, por ejemplo, es la más común. Otra es que, símplemente, estamos utilizando un navegador o equipo diferente al que usamos para comprar esas entradas o ese juego. Pero no siempre es así, y aunque nuestro navegador no borre sus huellas, permita acceso total a ellas a GoogleAds y estemos usando el mismo navegador, esta siguación no cambia. La cosa empeora porque no hay una norma de uso para las huellas. No me refiero a que no exista un ley, que la hay, sino a nomenclaturas de nombres y formatos de contenido comunes para su uso por parte de los programas. En definitiva: que GoogleAds no siempre sabe qué páginas hemos visitado, o qué hemos comprado. Y me temo que esta es la principal razón.

En definitiva, ¿sirven para algo? Pues en mi opinión no, porque no se usan correctamente.  Antiguamente, recuerdo que había páginas que las usaban para permitir al visitante cambiar, por ejemplo, el estilo de la página y leerla mejor.  Actualmente ni siguiera ofrecen esa posibilidad.  Son un incordio y sólo sirven para ocupar espacio, porque la inmensa mayoría de las web no las necesitan, como tampoco necesitan jQuery o Flash. Y si a eso añadimos que nuestros legisladores no tienen ni idea de lo que son, terminamos con un lío de tres pares.

Termino agradeciendo al Chaval de la mochila por permitirme usar su mensaje como ejemplo.

Notas al pie:

Permítaseme este arrebato de chovinismo, pero es que la palabra cookie siempre me ha sonado fatalmente mal, aparte de que tampoco sé muy bien qué tiene que ver una galleta con una variable.

Un colega me comentó que, aunque su web no las usaba, se vio obligado a poner el aviso de que sí porque le insistían desde el ministerio en que sí las usaba, porque era una web y por eso las usaba...

Otros:

Categorías: Artículos, Opinión, Programación, Web