[SOLUCIONADO] MySQL y PHP Multiples transacciones a la vez

Iniciado por Riojas, Junio 06, 2020, 12:33:03 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Junio 06, 2020, 12:33:03 PM Ultima modificación: Junio 17, 2020, 12:51:00 AM por AXCESS
Buenas gente, vengo con una duda.
Tengo una web app en angular que consume una api en php y base de datos en MySQL
Esta app se encarga de generar unas etiquetas con un folio consecutivo según el último folio que exista en la base de datos.
Que pasaría si por ejemplo 5 usuarios están haciendo un tramite al mismo tiempo
En ese momento todos los trámites tendrían el mismo folio.
Como evitar eso?.
El folio siguiente hay que traerlo cuando el usuario entra a la vista de generar etiqueta ya que hay que mostrarlo en un preview de dicha etiqueta.
Agradezco sus comentarios y sugerencias.
Gracias!

Hola No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Correcto, eso puede suceder y me lo he topado en varios ocasiones xD. Lo que tú quieres decir se llaman "Condiciones de Carrera" o más conocidas como "Race Conditions", las cuales permiten a un atacante explotar una vulnerabilidad en un mismo lapso de tiempo(para ser preciso, en el tiempo exacto) de las solicitudes o requests. Este tipo de vulnerabilidades, son comunes pero no son muy conocidas.

Para no ahondar más en el tema(puedes seguir buscando más acerca de este tema), te podría mencionar que una de las soluciones que se suelen implementar son los bloqueos. Los bloqueos te garantizarán que en cualquier momento, solo un subproceso pueda modificar la base de datos. Recuerda que muchas bases de datos proporcionan esta funcionalidad para bloquear las filas cuando un hilo está accediendo a esta.

Por último, alguna vez escuché que alguien recomendaba siempre "leer tus escrituras" y no estaba en lo equivocado; deberás siempre garantizar y validar que verificarás tus registros si existe algún cambio(campo por campo).

Un saludo.
Become the change you seek in the world. -Gandhi.