WinForm Application Security

0

Volevo creare un'applicazione winform con un database di sicurezza centralizzato. Questa applicazione è portatile, può essere salvata su qualsiasi PC e semplicemente eseguire l'.exe da usare, quindi ci saranno molte copie di questo software. Tuttavia, richiede un accesso utente, le credenziali dell'account di accesso si riferiscono al database di sicurezza centralizzato (il DB centralizzato è solo per scopi di sicurezza). Se il PC non dispone di una connessione Internet, il software non sarà in grado di identificare le credenziali. Quindi, mi è venuto in mente un ideale è mettere un timestamp, se l'ultima connessione a centralizzata è DB è < 24 ore su 24, vengono concesse le credenziali locali (copia DB dal database centralizzato). Ma il problema che devo affrontare ora è che il timestamp e il limite di 24 ore dovranno riferirsi all'ora corrente del sistema nel PC (che può essere facilmente modificata per ignorare il timestamp). Qual'è la soluzione? Qualche altro metodo che può controllare l'utente mentre l'applicazione va offline?

    
posta Cheelam1220 10.12.2014 - 05:12
fonte

2 risposte

0

Ci sono diversi vettori di attacco qui se qualcuno volesse piratare questo software. Potrebbero modificare il file binario o sostituire il server remoto con uno falso. In generale, i file binari di DotNET possono essere facilmente smontati o decompilati su un codice sorgente leggibile, gratuitamente, vedere link . Ancora peggio, il codice può anche essere modificato e ricompilato quasi altrettanto facilmente. Quindi, se hai qualche segreto o chiave di crittografia simmetrica nelle tue fonti, saranno compromessi. Questo può essere solo mitigato un po 'usando un obfuscator di terze parti, ma questo è solo un ritardo nell'inevitabile. Se hai già un metodo per ignorare l'autenticazione basata sul timestamp nel tuo codice, stai rendendo ancora più facile l'abuso. Inoltre, è possibile utilizzare la copia locale di db per configurare un server di autenticazione falso.

    
risposta data 10.12.2014 - 11:34
fonte
0

Il tuo schema è vulnerabile agli attacchi di replay: un utente malintenzionato può manipolare l'impostazione di data e ora del sistema locale per ingannare la tua app e accettare un token di sicurezza scaduto.

Inoltre, dato che stai inserendo tutti gli elementi di sicurezza nella tua memoria locale, non puoi semplicemente proteggerli contro l'utente locale: potrebbe, ad esempio, eseguire la tua app in un debugger, interromperla quando interpella il tuo DB locale e prendi i tuoi dati di autenticazione dalla memoria.

In altre parole, non esiste un modo infallibile per proteggere i dati nel modo desiderato. Tutto ciò che puoi fare è cercare di renderlo meno facile attraverso l'offuscamento.

    
risposta data 10.12.2014 - 11:25
fonte

Leggi altre domande sui tag