secure ways to prevent access to an application by more than one person at a time?
Non esiste un metodo sicuro per impedire agli utenti di eseguire più di un'istanza della tua applicazione sui loro computer se dispongono di una copia della tua applicazione. Se un utente ha una copia della sua domanda, può sempre trovare il modo di sovvertire qualsiasi controllo effettuato.
L'unico modo sicuro per limitare l'accesso dell'utente all'applicazione è di non eseguire l'applicazione nel computer dell'utente. In altre parole, un'applicazione web.
DRM può fare un buon lavoro per impedire agli utenti di utilizzare un'istanza della tua applicazione alla volta per motivi di licenza. Ma cercare di eseguire codice di fiducia in una macchina non affidabile è intrinsecamente insicuro.
DRM è un gioco perdente per sviluppatori e utenti legittimi. Il trasgressore delle licenze troverà sempre un modo per aggirare il DRM e il DRM che spesso trovano i modi per arrecare disagio e allontanare gli utenti legittimi, il che aumenta i costi di supporto.
I was thinking of testing System properties for Server versions of Windows, etc, but then I realized you can remote into any computer, with a variety of programs, so that is out the window.
Un utente illegittimo può sempre modificare qualsiasi file / impostazioni / registro nel proprio computer. Non c'è niente che puoi fare per impedirlo. Sono quelli con il privilegio di amministratore di sistema, non la tua applicazione.
Is it a security issue if I connect to my server, with FTP, before the application even logs a user in?
A meno che la tua applicazione non faccia affidamento sulla connessione di rete come parte, non puoi fare affidamento sulla connessione di rete. Se il tuo utente legittimo non ha una connessione internet a casa sua, la tua applicazione dovrà rifiutarsi di eseguire (inconvenienti legittimi) mentre un utente illegittimo può semplicemente impedire alla tua applicazione di accedere a Internet utilizzando un firewall dell'applicazione.
I also thought about trying to find and see if the application is already running on the machine (as a process or task i.e., what shows in "Task Manager").
Ciò non proteggerebbe dall'esecuzione su macchine diverse o dall'esecuzione dell'applicazione nella macchina virtuale. D'altra parte, gli utenti legittimi potrebbero aver bisogno di eseguire legittimamente più copie dell'applicazione, o la tua applicazione potrebbe essere bloccata come un processo di zombi immortale in background e l'utente legittimo potrebbe trovarsi a dover riavviare il sistema per riavviare nuovamente l'applicazione .
Le restrizioni sulle licenze e il DRM possono solo mantenere oneste le persone oneste.
"La mia vera applicazione non può essere eseguita come applicazione web, perché X, Y e Z. Con il DRM che è inutile, cosa può fare uno sviluppatore di software per proteggere le proprie entrate?"
Se sviluppi una grande applicazione a un prezzo ragionevole, le persone vorranno pagare per questo. Prepara un semplice controllo della licenza che puoi mettere insieme in un paio d'ore o persino liberarti dai DRM, e abbi cura di farlo. Accetta il rischio che ci siano utenti illegittimi e utilizzi le misure legali per attaccare i principali violatori (l'elusione anche di semplici DRM come il controllo stupido delle chiavi di licenza è legalmente protetto in molti paesi). Evita i DRM che fanno cose strane come impiantarsi nel settore MBR / boot o provare a nascondersi da System Administrator come rootkit. È più probabile che causino frustrazioni agli utenti legittimi che non ostacoli gli utenti illegittimi.