有没有一种安全的方法来识别可能在 PHP 中的路由器后面的设备(因此 IP 不是唯一的)?
背景:我有几个嵌入式设备(自编程和自适应),它们与网络服务器(php + mysql)联系并提供状态更新。然后,如果源得到确认,这些更新将保存到数据库中。
据我了解,它
$_SERVER['REMOTE_ADDR']
通常是可以信任的(除了一些 IIS 配置,它可能 - 在特殊情况下 - 错误地返回 127.0.0.1;但不同的故事)无论如何,因为我使用 SSL,IP 地址应该不是问题,因为需要握手,如果 IP 是伪造的或完全错误,则不应建立连接
现在我要求管理员将 IP 地址列入白名单,以便接受状态更新
设备还通过发送MAC地址
$_POST
来识别具有相同IP地址的不同模块(我知道这很容易被伪造,如果IP地址被信任,现在将被信任)
所以首先我不确定IP地址本身是否足以使其免受外部攻击
其次,如果设备位于路由器后面,它将与该网络上的每台 PC/设备具有相同的 IP 地址。因此,那里的任何人都可以使用伪造的 MAC 地址(仅作为 post 变量)伪造状态更新,并且由于 IP 地址被列入白名单,因此它将被信任
那么有什么方法可以确认设备的身份,或者您知道更好的方法吗?
旁白:换一种方式,让网络服务器轮询不同的设备可能是一种选择,但由于可能有许多(> 2000)设备我们需要最后一个状态(更改),我认为它效率低下。