Estoy tratando de evitar que algo similar a esto suceda:
Básicamente, el intercambio financiero estaba usando transacciones no ACID y las solicitudes múltiples enviadas casi a tiempo entre sí podrían resultar en retiros duplicados, o algo de esta naturaleza.
Una pregunta preliminar que tengo es, ¿a qué se denomina esta vulnerabilidad? ¿Un ataque de tiempo de algún tipo?
Aquí está mi configuración:
Estoy configurando dos tablas, una para una cola de pagos (es decir, pendiente de que se retire el pago), la otra para un historial de pagos (es decir, un recibo después de que se haya retirado el elemento de la cola de pago).
Mi flujo de procesamiento consiste en encontrar la cola de pagos por ID, hacer un montón de cosas asíncronas, procesar un pago, luego crear un objeto del historial de pagos y eliminar el objeto de la cola de pagos.
¿Cuáles son algunas estrategias con respecto al flujo del proceso que podría implementar para asegurarme de que si un usuario intentara acceder a este flujo dos veces seguidas muy rápidamente, no hubiera duplicados ni problemas similares?
He considerado que antes de comenzar el proceso podría eliminar el objeto de la cola de pagos, por lo tanto, con transacciones ACID que garantizarían que el proceso no se pudiera duplicar en un ataque de tiempo, ¿correcto? ¿Es esta la mejor manera de hacerlo?