Recentemente ho appreso che c'è un attacco che utilizza il fatto che quando impone una stringa confrontata (es. hash da una password o un token) in un database la query fallisce qualche nanosecondo prima se l'inizio della stringa è diverso che se la fine è diversa e i caratteri precedenti sono corretti. Se l'utente malintenzionato riesce a ottenere l'accesso esatto isolato al tempo della query, i tentativi necessari per trovare la stringa corretta diminuiscono significativamente rispetto alla forzatura bruta standard.
È persino possibile isolare il tempo di interrogazione su un server web remoto dato che ci sono visite costanti di altre persone e l'esecuzione di processi in background?
Se si tratta di una minaccia, quali sono le soluzioni best practice per proteggere i server Web? Cose a cui ho pensato:
- Hash le stringhe di input per offuscare la sequenza di caratteri.
- Aggiungi qualche tipo di tempo di risposta minimo alle query correlate. Probabilmente una cattiva idea perché potrebbe aprire i vettori di attacco DOS e potrebbe non essere fattibile con tipici scenari PHP / MySQL a causa del supporto del multithreading.