C'è un modo affidabile in PHP per identificare un dispositivo che potrebbe essere dietro un router (quindi l'IP non è univoco)?
Background: ho diversi dispositivi embedded (auto programmati e adattabili) che contattano un server web (php + mysql) con aggiornamenti di stato. Questi aggiornamenti sono quindi - se la fonte è confermata - salvati in un database.
-
Come ho capito% di solito è possibile fidarsi di
$_SERVER['REMOTE_ADDR']
(eccetto alcune configurazioni di IIS dove potrebbe, in circostanze particolari, restituire erroneamente 127.0.0.1, ma una storia diversa) -
Comunque, dal momento che utilizzo SSL, l'indirizzo IP in realtà non dovrebbe essere un problema, perché è richiesto un handshake e se l'IP è falso o semplicemente sbagliato, la connessione non dovrebbe essere stabilita
-
Per ora ho bisogno che gli indirizzi IP siano autorizzati da admin, perché un aggiornamento di stato sia accettato
-
Il dispositivo invia inoltre l'indirizzo MAC tramite
$_POST
per identificare i diversi moduli con identico indirizzo IP (so che questo può essere facilmente falsificato, e al momento sarà considerato attendibile se l'indirizzo IP è attendibile)
Quindi, prima di tutto, non sono sicuro che l'indirizzo IP di per sé sia sufficiente per proteggerlo dagli attacchi dall'esterno
In secondo luogo, se il dispositivo si trova dietro un router, avrà lo stesso indirizzo IP di ogni PC / dispositivo su quella rete. Quindi chiunque potrebbe creare un aggiornamento di stato con un falso indirizzo MAC (semplicemente come variabile post), e dato che l'indirizzo IP è autorizzato, sarà considerato attendibile
Quindi esiste un modo per confermare l'identità di un dispositivo o conosci un modo migliore per farlo?
A parte: Andando dall'altra parte, e avere il polling del server web, i vari dispositivi potrebbero essere un'opzione, ma poiché potrebbero esserci molti dispositivi (> 2000) di cui abbiamo bisogno dell'ultimo stato (modifica) I pensato che fosse inefficiente.
Ho anche sentito di usare un certificato firmato, o multiplo (per clienti diversi), ma non so come farlo, quindi grazie in anticipo per ogni bit di informazione.
Di solito non invio (molte domande), ma questo è davvero difficile per Google - almeno per me!