La pregunta no es programática sino conceptual.
Cuando un usuario está tratando de completar un formulario de contacto y luego el código CAPTCHA, si accidentalmente actualiza la página o no llena el campo de entrada requerido, regresará a la misma página generalmente con una nueva Código CAPTCHA. El usuario luego debe rellenar las entradas y, por desgracia, se encuentra con otro código CAPTCHA que debe resolverse nuevamente.
Yo, siendo un usuario antes que un desarrollador, lo veo como una tarea para completar constantemente los CAPTCHA y deseo que se pueda cambiar de alguna manera que no me haga distinguir innecesariamente a esos molestos caracteres en otra ocasión.
Luego de estar en el lugar de mis desarrolladores, decido cambiar la forma en que se muestra el código CAPTCHA. Guardo el código CAPTCHA en una sesión y no lo renovaré programáticamente a menos que:
- El usuario quiere actualizarlo.
- El usuario comete X errores al ingresar el mismo código CAPTCHA. (por ejemplo, 3 veces)
De lo contrario, en cada solicitud se muestran los mismos caracteres, no hay necesidad de preocuparse por las actualizaciones no deseadas. Pero siendo el desarrollador que lo pensó, puede haber posibilidades de que alguien pueda evitarlo o hacer un sabotaje de cosas que no conozco.
¿Puede ser seguro implementar este concepto y, si no, cuáles podrían ser sus vulnerabilidades?