Esto se puede hacer (relativamente) de forma segura, pero hay que tener cuidado con algunas cosas.
Primero, debes asegurarte de que nadie pueda acceder al token de otra persona fácilmente (¡doh!). Esto es más difícil de hacer en la práctica de lo que parece. Por ejemplo, si está enviando por correo electrónico el token en texto sin formato (lo que hará), básicamente está pasando el token del servidor smtp al servidor smtp sobre el que no tiene control. EDITAR: pero lo mismo también se mantendría para tokens de una sola vez. El uso de SSL en su servidor también es una buena idea, ya que cifrará los encabezados de solicitud que incluyen la cadena secreta.
En segundo lugar, debes asegurarte de que la clave sea lo suficientemente larga para que los ataques de fuerza bruta tomen demasiado tiempo. Si combina esto con la detección de fuerza bruta en su servidor (el servidor web hiawatha puede hacer esto de forma inmediata) debería estar bastante seguro contra estos.
Tercero, ¡asegúrate de que la clave sea aleatoria ! Si está utilizando microtiempo, esto significa que un atacante puede hacer un cálculo acertado sobre el tiempo de registro de la víctima (la mayoría de los sitios web tienen algún tipo de función "registrado en"), y simplemente probar todos los hashes de las marcas de tiempo en ese momento. Esto reduce la cantidad de hashes para probar (¡para un solo usuario objetivo!) De poco práctico a solo un millón. Esto puede parecer mucho, pero con una PC y un tiempo de respuesta de 100 ms, solo toma un día. Recuerda, este es un ataque dirigido, lo que lo hace muy peligroso.
Otra opción que podrías implementar es usar tanto el hash del nombre de usuario como el hash de acceso en la URL. De esta manera, no es posible orientar a todos los usuarios a la vez.
OMI, cuando se tienen en cuenta estas cosas, obtener un inicio de sesión basado en token puede ser más seguro que un inicio de sesión "normal", donde las personas eligen contraseñas incorrectas y las escriben en hojas de papel en su escritorio.