Blocca l'accesso di un sito Web a un determinato computer

3

Ho un sistema basato sul web in cui solo un sito specifico deve essere disponibile su un determinato computer. Su quel computer ho un'applicazione desktop. L'applicazione desktop e il sito web comunicano attraverso un database.

Ad esempio: un utente tenta di utilizzare questo sito Web "bloccato" e pertanto deve autenticarsi. Il sito Web crea, ad esempio, un file sul computer che può essere letto dall'applicazione desktop. Se l'applicazione può leggere il file, risponderà al sito Web che tutto è ok.

Esistono buoni modi per verificare che l'utente si trovi sul computer corretto?

    
posta hgerdin 15.10.2014 - 10:56
fonte

4 risposte

3

Un approccio relativamente facile a questo sarebbe creare un cookie persistente sul lato del client dopo il primo accesso. Il cookie dovrebbe contenere solo il nome utente dell'utente e una chiave generata. Durante il successivo log in il server verrebbe verificata la chiave contro la stessa chiave memorizzata nel database e se non corrisponde o l'utente non ha il cookie in alcun modo è possibile reagire nel modo desiderato, ad esempio un tipo di autenticazione di secondo livello ecc.

Questo fa apparire la domanda, cosa fare se l'utente cancella la cache o cambia il browser? Questo dovrebbe essere qualcosa che prendi in considerazione. Probabilmente una delle applicazioni più conosciute che utilizza questo sistema di autenticazione e verifica sui nuovi computer è Steam. Nessun cookie, ma il principio è fondamentalmente lo stesso.

    
risposta data 15.10.2014 - 14:08
fonte
0

Come diceva PiTheNumber, non è possibile creare o salvare un file sul disco degli utenti.

Tuttavia, è possibile consentire all'utente di scaricare il file generato in modo che l'utente possa aprirlo con l'applicazione desktop al termine del download.

Questo non è un problema con php, basta inviare le intestazioni giuste e quasi tutti i browser inizieranno il download.

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"'); //<<< Note the " " surrounding the file name
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));

Vedi questa SO-domanda per ulteriori informazioni.

Un altro approccio potrebbe essere quello di modificare l'applicazione desktop in modo che invii una richiesta al server (con alcune informazioni, IP pubblico, sistema operativo, browser installati ecc.) quindi l'utente può accedere al sito Web dopo l'installazione dell'applicazione.

Una terza soluzione possibile potrebbe essere un'estensione del browser scritta per l'autenticazione, quindi il tuo sito web potrebbe essere autorizzato a comunicare direttamente (o su un file) con l'applicazione desktop.

    
risposta data 15.10.2014 - 12:49
fonte
0

A causa delle restrizioni di sicurezza non è possibile creare un file sul lato client. Utilizzando JavaScript è tuttavia possibile memorizzare i dati in Cookie o localStorage. Vedi link

Potresti riuscire a leggere questi dati dalla tua app desktop. Vedi link e link

Aggiorna

A pensarci bene, hai scritto:

I've got a web based system where a specific site only shall be available on a certain computer.

Effettuerei un normale login utente e allego un'opzione per questo utente che può visualizzare questa pagina. Non è necessario creare un file o comunicare con l'app desktop.

    
risposta data 15.10.2014 - 12:15
fonte
0

La maggior parte delle soluzioni lato client come i cookie e i certificati client non sono strettamente legati alla macchina e possono essere esportati su un altro dispositivo o aggirati se un utente lo desidera davvero.

Una soluzione semplice sarebbe quella di collegare un cavo di blocco Kensington attraverso l'occhio di una chiave hardware monouso connessa al computer.

    
risposta data 15.10.2014 - 15:05
fonte

Leggi altre domande sui tag