Recientemente aprendí que hay un ataque que utiliza el hecho de que cuando se fuerza una cadena comparada (por ejemplo, hash desde una contraseña o token) en una base de datos, la consulta falla unos pocos nanosegundos antes si el comienzo de la cadena es diferente que si el final es diferente y los caracteres anteriores son correctos. Si el atacante logra obtener un acceso exacto y aislado al tiempo de consulta, los intentos necesarios para encontrar la cadena correcta se reducen significativamente en comparación con el forzado bruto estándar.
¿Es incluso posible aislar el tiempo de consulta en un servidor web remoto dado que hay visitas constantes de otras personas y procesos en segundo plano en ejecución?
Si esto es, de hecho, una amenaza, ¿cuáles son las mejores prácticas para proteger los servidores web? Cosas en las que pensé:
- Hash las cadenas de entrada para ofuscar la secuencia de caracteres.
- Agregue algún tipo de tiempo de respuesta mínimo a las consultas relacionadas. Probablemente sea una mala idea porque puede abrir vectores de ataque de DOS y puede que no sea factible con los escenarios típicos de PHP / MySQL debido al mal soporte de subprocesos múltiples.