È sicuro includere timestamp nei codici di errore mostrati agli utenti?

1

Se si verifica un errore, il nostro negozio online genera un codice di errore che viene mostrato all'utente. Al momento, non contiene un timestamp ma solo il giorno del mese. Questo non è intuitivo, ma presumo che l'intenzione originale fosse quella di fornire al potenziale aggressore il minor numero possibile di informazioni.

Tuttavia, sarebbe più comodo includere un indicatore temporale più preciso, ad esempio, AAAA-MM-GG-HH-MM.

È un buco di sicurezza per mostrare informazioni più precise sull'ora?

Non sto parlando di un timestamp ad alta risoluzione, ma solo del tempo approssimativo, quindi è più facile individuare i file di log e scoprire rapidamente quale versione del codice ha causato il problema.

Tutto ciò che l'utente malintenzionato vede è l'ora corrente e il fuso orario che usiamo. Non mi sembra fondamentale, ma forse mi manca qualcosa.

    
posta Philipp Claßen 04.02.2015 - 18:17
fonte

3 risposte

2

Non vedo un problema qui perché l'utente conoscerà l'ora esatta in cui ha fatto qualcosa. Considerando che un server ha bisogno di sincronizzare il proprio tempo con una fonte di tempo autorevole, non ci sarà nulla di "perso" all'utente che l'utente non conoscerà già.

Se si desidera nascondere alcuni aspetti del proprio server (ad esempio il fuso orario in cui risiede) è possibile elaborare i registri come ora UTC come formato orario generalizzato.

    
risposta data 04.02.2015 - 18:50
fonte
1

Uno dei principi della programmazione sicura è di fornire all'utente la minima quantità di informazioni possibile su un messaggio di errore. Mostra solo il timestamp se l'utente deve saperlo .

Non vedo alcun uso di un timestamp su un utente che affronta un messaggio di errore, quindi lo lascerei fuori.

È possibile utilizzare un timestamp su un attacco di canale laterale che tenta di eseguire il bruteforce di una password. È molto improbabile, molto difficile da fare correttamente, ma possibile.

Puoi usare una var speciale per mostrare un errore dettagliato con data e ora:

if (isset($_GET['is_debugging'))
   echo $timestamp;

Questo mostrerà solo il timestamp se la var is_debugging è definita sulla query. (Si spera) che gli utenti finali non siano a conoscenza della var e che gli sviluppatori possano utilizzarlo per eseguire il debug.

    
risposta data 04.02.2015 - 20:24
fonte
1

Queste informazioni possono essere utili dal punto di vista del supporto, in modo che l'utente possa aprire un ticket nel tuo negozio online e dire esattamente quando ha riscontrato il problema descritto. Altrimenti, cercando di risolvere i problemi degli utenti che affermano di aver riscontrato un errore "la scorsa settimana di martedì mattina ... a meno che non fosse mercoledì ... in realtà forse era alla fine del pomeriggio invece ...", potresti finire per perdere troppo tempo per esaminare i registri senza sapere cosa, quando e dove cercare.

Una buona alternativa, IMHO, vedo sempre più spesso mostrare una rappresentazione base64 di alcuni dati crittografati, dicendo al cliente di inviare questi dati al centro di supporto avrebbe bisogno di assistenza (Google usa questo sistema, un esempio può essere trovato qui ). In questi dati, sei più libero di inserire dati che possono aiutarti a indagare sul problema riscontrato senza rivelare nulla all'utente finale (e, come bonus, ti garantisce che l'utente abbia effettivamente riscontrato un problema ...).

    
risposta data 05.02.2015 - 11:37
fonte

Leggi altre domande sui tag