Ho uno script PHP in cui mi piacerebbe rilevare se l'utente è in esecuzione su un computer locale, non accessibile su Internet. Attualmente controllo l'indirizzo del server a 127.0.0.1. È questa la migliore pratica o c'è un modo migliore?Come rilevare se in esecuzione su localhost
risposta
Localhost traduce sempre all'indirizzo di loopback IP 127.0.0.1
in IPv4, o ::1
in IPv6, così convalidando la IP all'interno dell'applicazione sarebbe sicuro, se si intende
if(IPAddress::In(array("127.0.0.1","::1")))
{
//Show Application
}
dubito molto che si dovrà un gruppo di hacker d'élite dopo la tua porta 80 ma come nota a margine ci sono stati alcuni discorsi sui difetti nel fare affidamento su un indirizzo IP in quanto i pacchetti TCP possono essere modificati.
Ma non dovrebbe essere una preoccupazione per voi.
È anche possibile controllare l'hostname localhost ma se l'indirizzo del server è 127.0.0.1, dovrebbe risolversi. Questa è una pratica standard su ipv4. Su ipv6 puoi controllare :: 1 come suggerisce Robert Pitt.
127.0.0.1 si risolve sempre nel computer locale corrente – RobertPitt
@RobertPitt che potrebbe essere vero, ma non è l'unico indirizzo che risolve il computer locale. ci sono circa 16777216 in più nel 127/8 netblock. –
Non sono sicuro che le risposte finora siano chiare, ma potrebbe essere io che sono confuso. Rispondo in particolare alla parte della tua domanda che dice "non accessibile su Internet". Ecco il mio tentativo di risposta:
Il server Web, non PHP, è in ascolto su un socket e accetta connessioni. PHP può ottenere informazioni sulla connessione da $ _SERVER (http://www.php.net/manual/en/reserved.variables.server.php). Tieni presente che tutto quello che stai verificando è da dove proviene la connessione: non puoi sapere nulla se il tuo server è disponibile tramite altri indirizzi IP da $ _SERVER. Ad esempio, posso accedere al mio un'istanza locale di Apache/PHP tramite qualsiasi:
- http://localhost/ ($ _SERVER [ "SERVER_ADDR"] => :: 1)
- http://127.0.0.1/ ($ _SERVER [ "SERVER_ADDR"] => 127.0.0.1)
- http://192.168.75.121/ ($ _SERVER [ "SERVER_ADDR"] => 192.168.75.121)
- http://shiva.local/ ($ _SERVER [ "SERVER_ADDR"] => fe80 :: 21c: 42ff: FE00: 8)
Quindi, se il tuo piano è che il l'app deve comportarsi in modo diverso quando si visualizza il valore "corretto" in $ _SERVER ["SERVER_ADDR"], probabilmente si è abbastanza sicuri, ovvero è improbabile che possa essere falsificato da un utente da un client remoto.
Detto questo, non utilizzerei nessuna di queste tecniche per l'autenticazione degli utenti o l'autorizzazione di privilegi/azioni utente su un'applicazione distribuita disponibile su Internet. L'unica eccezione potrebbe essere se hai un'intera app che deve essere disponibile solo quando accedi da localhost - quindi questa tecnica probabilmente ha senso e sarà abbastanza sicura per un'app personale.
Non sono preoccupato di proteggere nulla: lo script (plugin WordPress) invia l'URL di un file a un'API basata sul Web; Sto cercando di assicurarmi che le persone non stiano provando questo dai loro computer locali non accessibili alla rete. –
- 1. Come posso rilevare se l'utente è su localhost in PHP?
- 2. Come verificare se localhost
- 3. Come rilevare se sono in esecuzione in mono-servizio?
- 4. Come connettere JProfiler a un'applicazione in esecuzione su localhost?
- 5. Come rilevare se Vim è in esecuzione in modalità limitata?
- 6. Come posso rilevare se l'IDE Delphi specifico è in esecuzione?
- 7. C#: come rilevare se lo screen reader è in esecuzione?
- 8. Come posso rilevare se sono in esecuzione nella console
- 9. Come rilevare se webpack-dev-server è in esecuzione?
- 10. Come rilevare se uno script PHP è già in esecuzione?
- 11. OSX: come rilevare se il controllo missione è in esecuzione?
- 12. reverse proxy nginx per backend in esecuzione su localhost
- 13. I siti in esecuzione su "localhost" sono estremamente lenti
- 14. Come può il mio programma rilevare se è in esecuzione su un particolare dominio?
- 15. Come posso rilevare se la mia applicazione è in esecuzione su Windows 10
- 16. Come rilevare se lo script è in esecuzione su una macchina virtuale?
- 17. Rilevare se un'altra istanza dell'applicazione è già in esecuzione
- 18. Come rilevare il sistema operativo in esecuzione?
- 19. context.getImageData() su localhost?
- 20. Come rilevare se siamo su un thread dell'interfaccia utente?
- 21. Rileva se il server ADB è in esecuzione su Android?
- 22. Qual è il modo corretto per rilevare se Ruby è in esecuzione su Windows?
- 23. Come posso rilevare quando sono su un sistema su cui è in esecuzione Unity?
- 24. Come ascoltare solo su localhost su MongoDB
- 25. Come verificare se mongo db è in esecuzione su Mac?
- 26. Come rilevare tramite Java se un particolare processo è in esecuzione in Windows?
- 27. Come rilevare se un test di moka è in esecuzione in node.js?
- 28. Come posso rilevare se il mio codice è in esecuzione nella console in Rails 3?
- 29. Come arrestare il server RabbitMQ su localhost
- 30. iPhone: come rilevare se iTunes sta giocando?
Questa è la pratica normale si, O in Windows 7 Host che utilizza IPV6 ':: 1', http://en.wikipedia.org/wiki/Localhost – RobertPitt
Grazie a tutti - Non avevo considerato IPv6. Saluti. –