Sto lavorando con un'app WPF/C# in cui ho bisogno di bloccare gli utenti dall'accedere a una particolare funzionalità per un po 'di tempo. In sostanza, dal momento in cui si verifica un determinato evento, voglio impedire determinati accessi per le prossime 24 ore.Esiste un orario assoluto di Windows per i timestamp? (.NET)
Il semplice caso:
- evento si verifica, salvare timestamp (utilizzando DateTime o simili)
- utente cerca di accedere a un'area di 15 ore più tardi, confronto al timestamp ... blocco
- tentativi degli utenti per accedere all'area 25 ore più tardi, confronta Ora con il timestamp ... consenti
Tutto bene. Tuttavia, l'utente ha la possibilità di modificare l'ora del sistema, che mi fa vergognare. Possono semplicemente impostare l'ora del sistema con 24 ore di anticipo e la mia app non sarà più saggia.
Suppongo che la modifica dell'ora in Windows si diriga verso l'orologio in tempo reale del sistema ... quindi esiste un timer di funzionamento libero indipendente dall'orologio di sistema? Uno con cui l'utente non può scherzare?
Qualsiasi intuizione è apprezzata.
ma entrambi questi sono dipendono dall'ambiente dell'utente. Cosa succede al riavvio (per Environment.TickCount) o se Internet è scollegato (servizio Web)? –
@Stephen, ho notato in particolare che Environment.TickCount si reimposta al riavvio. Per quanto riguarda se il servizio non è disponibile, se l'app richiede quel livello di integrità non dovrebbe essere consentito di funzionare offline. – Josh
+1 La parte importante di questa risposta è che non solo è una fonte esterna di tempo l'unica vera opzione, ma se si vuole veramente essere sicuro, è necessario proteggere portarvi direttamente contro utenti malintenzionati spoofing il servizio di tempo - da qui la necessità per SSL . –