首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PHP中安全地识别远程设备?

如何在PHP中安全地识别远程设备?
EN

Stack Overflow用户
提问于 2013-06-24 12:22:45
回答 1查看 680关注 0票数 1

有没有一种安全的方法来识别PHP中路由器后面的设备(所以IP不是唯一的)?

背景:我有几个嵌入式设备(自我编程和适应性),它们与一个with服务器(php+mysql)联系,进行状态更新。如果确认了源,则将这些更新保存到数据库中。

  • 据我所知,$_SERVER['REMOTE_ADDR']通常是可以信任的(除了某些IIS配置--在特殊情况下--错误地返回127.0.0.1;但情况不同)
  • 无论如何,由于我使用SSL,IP地址实际上不应该是一个问题,因为需要握手,如果IP是伪造的或简单的错误,则不应该建立连接。
  • 现在,我要求管理员将IP地址白化,以便接收状态更新。
  • 此外,该设备还通过$_POST发送MAC地址,以识别具有相同IP地址的不同模块(我知道这很容易伪造,如果IP地址是可信的,现在就会被信任)

因此,首先,我不确定IP地址本身是否足以使其免受外部攻击。

其次,如果设备在路由器后面,它将具有与该网络上的每台PC/设备相同的IP地址。因此,那里的任何人都可以伪造一个带有假MAC地址的状态更新(简单地说是post变量),并且由于IP地址是白色的,它将被信任。

,那么有什么方法可以确认设备的身份,或者您知道更好的方法吗?

旁白:另一方面,让we服务器轮询不同的设备可能是一种选择,但由于可能有许多(> 2000)设备,我们需要的最后一个状态(更改),我认为这是低效的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-24 13:54:33

IP地址可以被欺骗,MAC地址可以伪造,所以这些方法是不够的。一般的方法是为每个客户端设备分配一个密钥(可能对所有设备都分配相同的密钥,即使这可能是个坏主意)。“密钥”可以是从预定义字符串(弱,考虑用户名/密码)到签名证书(强,考虑SSL)。

这两种方法都可以在应用程序级别(通过PHP)或在服务器级别实现。如果您的应用程序运行在Apache httpd服务器上,我建议使用它的内置特性,因为它支持两者都有 方法

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17275378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档