Nuestra aplicación web envía un token generado de un solo uso, en forma de una URL, a los clientes que olvidan sus contraseñas. Esto funciona excepto en el caso de que el cliente esté sentado detrás de otro servidor que escanea su correo electrónico en busca de URLS y realiza un GET en la URL. Supongo que el servidor está buscando una carga útil maliciosa.
El cliente abre el correo electrónico y hace clic en el enlace, pero obviamente no pasa nada porque el token no es válido en ese momento.
Puedo pensar en algunas formas de manejar esto:
• En lugar de caducar de inmediato, permita que el token sea válido durante un período de tiempo determinado. Desventaja: Esto elude todo el punto de un token de uso único ya que el token se puede usar varias veces. Además, puede que no resuelva el problema si el usuario decide abrir su correo electrónico ANTERIOR a la fecha de caducidad.
• Hacer que el token sea bueno para dos usos. Desventaja: similar a la anterior. ¿Qué pasa si el verificador de spam "comprueba" la URL de nuevo ... Suspiro.
De todos modos, estoy buscando algo de sabiduría aquí sobre cómo manejar esto. Si hay mejores ideas que las que he propuesto, me encantaría escucharlas.
EDITAR: He publicado esto en programmer.stackexchange . Vaya allí para un poco más de discusión, pero la respuesta que seleccioné a continuación es básicamente la misma respuesta.