Come posso consentire solo ai browser autorizzati di accedere a un sito web?

3

Ho un sito Web e desidero che sia accessibile solo ai client / browser autorizzati (ad esempio con un certificato).

L'idea è che gli utenti possano accedere alla pagina web solo nei computer dell'ufficio (situati in diverse aree geografiche e che siano società diverse, quindi non posso controllare l'IP o installare qualcosa manualmente).

Stavo pensando in qualche certificato di chiave privata installabile o qualcosa del genere.

Che scelte ho?

EDIT:

Sto usando PHP

    
posta user1532587 18.04.2014 - 15:32
fonte

8 risposte

4

C'è un caso d'uso molto interessante in quest'altra risposta, usando i certificati lato client:

Perché il sito web della BBC chiede sempre un certificato personale e come posso evitare di darlo via?

Un'altra opzione rapida e sporca potrebbe essere implementare una VPN e spostare il dominio del problema da PHP a amministrazione del sistema. Ciò potrebbe rivelarsi utile se, in futuro, è necessario concedere l'accesso non solo a un sito Web, ma anche ad altre risorse quali cartelle condivise, ecc.

    
risposta data 18.04.2014 - 17:55
fonte
3

questa è una lunga storia, non posso commentare, quindi lasciaci come link qui Utilizzo dei certificati client SSL con PHP

potresti anche dare un'occhiata alla direttiva sui diritti d'uso di Apache potrebbe essere un po 'più difficile da raccontare

anche il modulo PHP OpenSSL php.net/openssl

un sacco di cose intorno a questa domanda

    
risposta data 18.04.2014 - 17:30
fonte
2

Sul server, è facile controllare le intestazioni di ogni richiesta HTTP (l'intestazione User-Agent , nel tuo caso) e reindirizzare a una pagina di destinazione che spiega perché il browser non può essere utilizzato e quali browser sono supportati.

Dovrai installare un modulo di autenticazione per convalidare le richieste provenienti da client non autorizzati. In alcuni casi l'installazione di un certificato X.509 su ciascun client potrebbe essere un'opzione, ma sicuramente sembra un problema di manutenzione. Probabilmente starai meglio fornendo funzionalità di accesso, per le quali esistono varie soluzioni.

    
risposta data 18.04.2014 - 15:53
fonte
2

Limitare l'accesso per il browser web (user-agent) è qualcosa che è molto facile da manipolare usando uno strumento come i dati di Tamper. Puoi cambiare l'intestazione per far sembrare che la richiesta provenga da qualsiasi browser tu voglia. Se si desidera assicurarsi che possano accedere al sito Web solo dall'ufficio (se si tratta di una posizione), è possibile limitare l'accesso in base all'indirizzo IP. Oltre a questo, penso che dovrai utilizzare una sorta di scenario in cui installi i certificati sul client per confermare chi sono.

    
risposta data 18.04.2014 - 16:20
fonte
2

È possibile impostare SSL e creare il proprio certificato. Credo che ci sia un'opzione per creare qualcosa come certificati approvati dal cliente. Ciò significa che è necessario installare la parte client del certificato sul client (il browser). Se il client non ha installato questo, non funzionerà.

Per essere onesti - questo è qualcosa che ho letto sulla scorsa settimana, e prima ancora non sapevo che esistesse. Al momento non riesco a ritrovarlo, e potrebbe essere chiamato qualcos'altro.

    
risposta data 18.04.2014 - 17:13
fonte
1

Stai cercando la crittografia a chiave simmetrica qui. Entrambe le chiavi devono essere mantenute segrete. Questo può essere fatto a livello di applicazione del tuo sistema.

Ecco un algoritmo di esempio:

  1. Genera una chiave per ogni utente che deve essere autenticato.
  2. assegna la (e) chiave (i) all'utente (i) (usa Diffie-Hellman )
  3. Calcola sent_challenge = encrypt(k1,challenge) e aggiungilo alla tua coda con qualche identificatore per ogni cliente
  4. inviarlo al client il browser dovrebbe calcolare il recupero di recv_challenge = decrypt(k1,sent_challenge)
  5. ora confronta sent_challenge ?= recv_challenge

note: k1 qui è la chiave per il client di connessione

    
risposta data 02.06.2014 - 13:51
fonte
1

Crea una pagina di "registrazione" che imposta un cookie su un GUID casuale. Sulle altre pagine, controlla il valore del cookie. Il processo di autenticazione è ora semplicemente una questione di aggiungere GUID "buoni" a un database di autorizzazione.

I dettagli esatti sono facilmente personalizzati. Ad esempio, è possibile consentire agli utenti di inserire la propria affiliazione e controllarlo manualmente prima di aggiungere il GUID al database. Oppure basta passargli il GUID via e-mail e la pagina di registrazione imposta semplicemente il GUID inserito come valore del cookie.

Il vantaggio è che ora il processo manuale può essere eseguito da un singolo PC, invece di dover visitare ciascun PC.

    
risposta data 02.06.2014 - 18:05
fonte
-1

Php può determinare che cosa sono i browser in esecuzione e altri dettagli di sistema eseguendo un po 'di codice.

Cerca di identificare l'indirizzo MAC di ogni computer tramite php, in modo che solo i computer conosciuti possano accedervi.

    
risposta data 19.04.2014 - 19:01
fonte

Leggi altre domande sui tag