2009-08-25 13 views
6

Lavoro per un'università e sto implementando un'app Web PHP che deve avere un comportamento diverso quando viene visitata da un determinato computer. Il problema che sto incontrando è quello dal server web, utilizzando $ _SERVER ['REMOTE_ADDR'] e gethostbyaddr(), posso solo identificare il router che sta attraversando un computer, e non uno specifico nomecomputer.Identificare univocamente un computer

Esiste comunque la possibilità di impostare quel computer specifico per identificarsi al server in modo che il server sappia quando è possibile accedere alla webapp da quella macchina? Il computer sta eseguendo firefox in modalità kiosk, quindi sono consentiti addon o script greasemonkey ...

risposta

12

È possibile impostare un cookie. Questo sarà ricordato dal client e trasmesso al server come parte di ogni richiesta. Ulteriori informazioni qui: http://www.w3schools.com/PHP/php_cookies.asp

+6

Assicurati di capire che i cookie possono (molto facilmente) essere falsificati ... –

+0

Sfortunatamente, se qualcuno ha accesso al computer, può rubare cookie e impostare lo stesso cookie su un altro computer. – Dmitriy

+6

@Dmitriy Sfortunatamente, non è probabile che ci sia una soluzione che non può essere interrotta dall'accesso fisico diretto alla macchina. – ceejayoz

-4

Non hai un SessionID? L'ID sessione dovrebbe essere abbastanza unico da identificare un computer.

+2

Non se chiudono il browser. – ceejayoz

+0

Accettando solo con ceejayoz. Non pertinente alla domanda che viene posta. –

+0

È interessante notare che voi ragazzi avete completamente frainteso la risposta. Ovviamente il sessionID è nel cookie e i cookie vengono mantenuti anche se chiudi il browser. – daniel

2

Alcuni pensieri:

  • impostare un cookie durevole. (Dal momento che FF è in modalità kiosk, dovresti essere al sicuro dagli utenti che lo eliminano.)
  • Chiedi a quel chiosco di utilizzare un URL diverso (magari con un parametro stringa di query).

Quello che non vorrei fare è lavoro secondo l'indirizzo MAC della macchina (che Gibson ci dice è possibile) o simili; troppo fragile quando l'hardware viene risolto, ecc.

4

Si potrebbe impostare un cookie, o, in alternativa, è possibile modificare l'intestazione UserAgent che l'installazione di Firefox sta usando per qualcosa di distintivo.

Per cambiare la stringa User Agent, solo immettere about: config come un indirizzo nella barra degli indirizzi di Firefox, la posizione in cui normalmente si immette un URL (link). Raccomando di conservare il valore originale, che è possibile ottenere quando si entra quasi: nella barra degli indirizzi .

Ora premere il tasto destro del mouse su accedere al menu di scelta rapida e selezionare "Stringa" dalla voce di menu "Nuovo". Inserire il nome di preferenza "general.useragent.override", senza le virgolette. Successivamente, immettere il nuovo valore Agente Agent che si desidera utilizzare Mozilla Firefox . Ho aggiunto il mio nome e un collegamento a il mio sito web al valore originale. È inoltre possibile selezionare uno dall'elenco stringhe User Agent.Controlla il nuovo valore inserendo about: nella barra degli indirizzi .

È possibile recuperare questa stringa User-Agent da $_SERVER['HTTP_USER_AGENT'] in php.

0

Sono sicuro che hai una buona risposta, ma se stai cercando una soluzione che identifichi in modo univoco il COMPUTER piuttosto che il BROWSER, cerca in FLASH COOKIES a.k.a OGGETTI CONDIVISI FLASH.

tesi sono più potenti e possono essere utilizzati per memorizzare dati fino a 100 KB e rimane la stessa in tutti i browser con installato Flash, quindi è soluzione migliore per identificare in modo univoco un utente

1

Perché non implementare un sistema di autenticazione e posizionare quegli utenti che hanno bisogno della funzionalità speciale in un gruppo speciale?

0

Prova questo.

$something=$_SERVER['HTTP_USER_AGENT']; 

Per identificare in modo univoco di controllo utente $something corrisponde il proprio. (Che si trova sul vostro codice PHP). in caso affermativo, quindi procedere con l'accesso.

Problemi correlati