¿Existe una forma confiable en PHP para identificar un dispositivo que pueda estar detrás de un enrutador (por lo que la IP no es única)?
Antecedentes: tengo varios dispositivos integrados (auto-programados y adaptables) que contactan con un servidor web (php + mysql) con actualizaciones de estado. Estas actualizaciones se guardan en una base de datos, si se confirma la fuente.
-
Tal como lo entiendo,
$_SERVER['REMOTE_ADDR']
por lo general se puede confiar (excepto en algunas configuraciones de IIS donde puede, en circunstancias especiales, devolver 127.0.0.1, pero una historia diferente) -
De todos modos, ya que uso SSL, la dirección IP realmente no debería ser un problema, porque se requiere un protocolo de enlace y si la IP es falsa o simplemente incorrecta, no se debe establecer la conexión
-
Por ahora solicito que las direcciones IP estén en la lista blanca del administrador, para que se acepte una actualización de estado
-
El dispositivo además envía la dirección MAC a través de
$_POST
para identificar los diferentes módulos con una dirección IP idéntica (Sé que esto puede ser fácilmente falsificado, y ahora se confiará si la dirección IP es confiable)
En primer lugar, no estoy seguro de que la dirección IP sea suficiente para estar a salvo de los ataques desde el exterior
En segundo lugar, si el dispositivo está detrás de un enrutador, tendrá la misma dirección IP que todas las PC / dispositivos en esa red. Por lo tanto, cualquier persona podría forjar una actualización de estado con una dirección MAC falsa (simplemente como variable de publicación), y dado que la dirección IP está en la lista blanca, será de confianza
Entonces, ¿existe alguna forma de confirmar la identidad de un dispositivo o conoces una mejor manera de hacerlo?
Aparte: Yendo hacia el otro lado, y haga que el servidor web examine los diferentes dispositivos podría ser una opción, pero ya que puede haber muchos (> 2000) dispositivos de los cuales necesitamos el último estado (cambio) I pensé que era ineficiente.
También he oído hablar sobre el uso de un certificado firmado o múltiple (para diferentes clientes), pero no sé cómo hacerlo, así que gracias de antemano por cada bit de información.
Por lo general, no publico (muchas) preguntas, pero esto es realmente difícil de buscar en Google, ¡al menos para mí!