2010-04-12 15 views

risposta

25

Il codice REMOTE_ADDR è impostato dal server Web, non da PHP. Se il server Web ascolta V6 e l'utente si connette in questo modo, sarà un indirizzo v6

+0

+1, grazie! Cercherò di capire come posso convertire un indirizzo IPv6 in un numero. –

+3

http://php.net/manual/en/function.inet-pton.php convertirà gli indirizzi "stringa" v4 e v6 nella loro rappresentazione impacchettata. –

+0

@Michael IPv6 ha molte rappresentazioni di testo. Esiste una rappresentazione standard restituita da '$ _SERVER ['REMOTE_ADDR']'? – Pacerier

1

Ho visto un indirizzo IP non valido riferito a PHP in REMOTE_ADDR da Apache 2.

E 'stato '183.60. .244.37' .

Quindi la risposta alla tua domanda, "È sicuro assumere ...", penso che sia sicuramente no, REMOTE_ADDR non può essere considerato attendibile.

Per quanto ne so è segnalato a PHP dal server, nel mio caso Apache. Perché è stato male, sto ancora cercando di capire. Lo so. È arrivato come parte di una serie di richieste di attacco. A volte era 183.60.244.37 ea volte era 183.60..244.37.

Vedere anche this.

+0

Bello sapere, probabilmente qualche bug Apache no? –

+0

Uno sviluppatore di php mi ha appena detto che REMOTE_ADDR proviene da cgi e quindi dalla connessione TCP del server e non da http. Ma sto ancora lavorando alla ricerca di come il server potrebbe segnalare questo a php, se questo è ciò che sta accadendo. –