Domanda

ho bisogno di fare in modo che tutti gli utenti che accedono mia applicazione web possono farlo da una sola macchina, in modo da 100 utenti significherebbe 100 macchine. Quale sarebbe la soluzione migliore? È rilevare e memorizzare IP durante la prima buona idea di accesso? Penso IP potrebbe cambiare anche durante la vita della sessione è quello giusto? Pensavo anche di memorizzare cookie quando primo accesso. Poi l'assegnazione di questi cookie l'utente, lo stesso come faccio con password e username già, e ogni volta quando si accede all'applicazione verifica di presenza di quel cookie.

Si prega fatemi sapere cosa secondo te sarebbe la soluzione migliore. Il mio backend è php / mysql se quello che conta.

EDIT: ho bisogno di chiarire ... Questo è in aggiunta alla normale gestione della sessione. Ho bisogno di limitare gli utenti a essere in grado di accedere a un'applicazione web da una sola macchina specifica. Quindi, se l'utente originariamente registrato dal suo computer al lavoro e ho conservato il suo IP / cookie / ecc., Allora cliente si disconnette (o anche meno), va a casa e cerca di login non saranno in grado di farlo. Sono d'accordo la sua orribile idea, ma cliente insiste:)

È stato utile?

Soluzione

indirizzo IP potrebbe cambiare nel caso di clienti di telefonia mobile, o clienti che passano tra reti cablate e wireless. La cosa migliore sarebbe probabilmente quello di fornire un UID randomica ad ogni client quando si connette primi (se non ha già il cookie). Poi si può verificare che lo stesso nome utente non si connette utilizzando due differenti UID.

Il trucco è che è necessario fare in modo di volta UID, in modo che se l'utente passa a un altro computer che non sono bloccati. Forse una modifica al UID va bene, ma non può tornare a un UID che è già stata utilizzata?

Altri suggerimenti

È possibile limitare ad un unico UserAgent eseguendo il cliente con un certificato SSL lato client creato con l'elemento keygen, questo diventa il browser per generare una coppia di chiavi, mantenendo la chiave privata nella user agent, allora si riceve uno SPKAC , che è possibile utilizzare per OpenSSL creare un certificato, che poi rispedite al user agent, si installa e può essere utilizzato per identificare l'utente in quel browser specifico solo tramite HTTP + TLS da allora in poi.

Tutto il resto, semplicemente non funziona al 100% - anche se è possibile incidere modi che sembrano di lavoro (fino a quando qualcosa va storto e non funziona):)

Purtroppo, un IP non è specifico per il computer per diverse ragioni:

  1. L'indirizzo IP potrebbe cambiare durante la sessione, senza alcun preavviso (l'utente potrebbe anche non essere a conoscenza di esso)
  2. La maggior parte degli utenti hanno IP dinamico, in modo che sicuramente cambierà ad un certo punto
  3. Per le macchine come ad esempio un computer portatile, tablet o un telefono cellulare, l'indirizzo IP è basato sul fornitore di servizi corrente
  4. Tutti gli utenti dietro un proxy sembrerebbe a voi come un singolo IP, in modo che ancora non sarebbe in grado di rilevare se si spostavano da una macchina all'altra

Invece, generare una sorta di chiave univoca per la sessione e la pista in combinazione con il nome dell'utente. Impedire loro di registrazione nel caso lo stesso nome utente è già in un'altra sessione attiva. (Si potrà anche un modo per svuotare automaticamente questi, nel caso in cui si perde l'evento della sessione-end.)

La soluzione migliore è già incorporato nel server web a seconda di quale si sta utilizzando. Questo è ciò che il Sessions sono per. In ASP.NET/IIS, di solito v'è un 20 minuti al timeout di sessione.

Quindi, se un utente utilizza un altro computer per accedere al tuo WebApplication, allora il timeout di sessione rilascerà collegamento dalla macchina che non è in uso.

Aggiorna

Si potrebbe prendere in considerazione la limitazione utente l'indirizzo MAC del loro macchine che sono unici.

Se si tratta di un'applicazione molto interna che verrà utilizzata solo all'interno di una società, potrebbe essere possibile definire un intervallo di indirizzi IP perché le aziende più piccole che non operano in tutto il mondo probabilmente avere una certa quantità di IP dal loro fornitore di accesso a internet.

Si potrebbe anche pensare di utilizzare alcune informazioni da $ _SERVER per limitare gli utenti ad un combnation di un browser web singola (HTTP_USER_AGENT) ed una singola porta (REMOTE_PORT) -. Come un ulteriore modo per differenziare le macchine

Ma tutte queste soluzioni sono cattivi o, peggio, è tecnicamente probabilmente non è possibile per risolvere questo problema (a meno che non si avrà garanzie dal client che tutte le macchine non mancherà di tenere un IP statico, nel qual caso si tratta di un banale se il problema altro).

Non farlo. Molte persone accedere al tuo sito da più computer, e si lamentano se li blocchi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top