Aquí hay algunas ideas.
- Todo tiene que ser SSL TLS v1.2 +
- Sería mejor tener un nombre de usuario / contraseña
- Al tener éxito en el registro, el usuario obtiene un código 64 bytes aleatorios o más
- La solicitud se modifica, así que en lugar de enlace tiene enlace 64 bytes aleatorios o más / archivo
- El código caduca cuando el usuario cierra la sesión o se basa en el tiempo
- La base de tiempo es más segura, y la aplicación puede obtener un nuevo código cada 5 minutos
- Cada código está vinculado internamente a una dirección IP, y el usuario tiene que volver a iniciar sesión si cambia.
- Cualquier IP que envíe un token de 64 bits falso está prohibida. decir 20 minutos.
Si MITM el certificado SSL y el paquete volcaron el tráfico, todavía podría ser posible, pero la barra se eleva significativamente. La firma y fijación de certificados hacen que esto sea increíblemente difícil.
De esta manera no se almacena ningún código fijo en la aplicación. El usuario debe pasar por una verificación de usuario / contraseña para incluso obtener dicho código. Incluso si publica el código fuente, un nombre de usuario y una contraseña válidos no estarán presentes.
Cada usuario y si se permiten múltiples inicios de sesión por usuario, cada instancia tiene una clave diferente. Si tienen un teléfono celular y una tableta.
Sin un nombre de usuario / contraseña, cualquier proceso puede ser diseñado por ingeniería inversa. El token de 64 bits no se puede adivinar fácilmente, pero el proceso de obtener uno podría adivinarse con el tiempo.
PHP tiene un "id de sesión", y usted podría vincular el id de sesión a la carpeta real internamente. Eliminar dicha carpeta después de 5 minutos o etc. Probablemente sea mejor utilizar una función aleatoria segura.