我正在尝试实现非常简单的身份验证来更新服务器上的值。情况如下:
我有一个连接到树莓派的门传感器。每次触发传感器(“打开”或“关闭”)时,我都会向位于“api.xxxxxx.com”的 Digital Ocean Droplet 发送 POST 请求,该请求指向 Restify 服务器。 POST 请求正文包含传感器状态、时间戳和 API key 。 RESTify 服务器还有一个名为“constants.js”的文件,其中包含相同的 API key 。如果从 RPi 发送的 API key 与我的 Droplet 上的常量文件中的 key 相同,则它允许更新值(最新状态/时间)。如果没有,它只会发回一条错误消息。
API key 是通过 SHA3-256 发送的密码。
这个方案适合我正在做的事情吗?我唯一能想到的是,如果有人找到了端点,他们可能能够向它发送垃圾邮件请求,但除此之外别无他法。 API key (在我本地的树莓派和 Droplet 上)保存在不同的文件中,并从 git 中排除,因此查看 git 文件不会显示任何内容。
我也不希望任何人能够访问我的 Droplet 或树莓派,因此,如果我正确设置 SSH,我也不知道它(文件中的 API key )是如何泄露的。
编辑:忘了说我正在 Raspberry Pi 上使用 Python 来发送 POST。 Droplet 正在运行 RESTify 服务器 (JS)。
最佳答案
嗯,你很容易受到网络窥探。如果任何人可以窥探任何一个网络链接,那么他们就可以窃取 API key 并可以自由地使用您的服务。
两个链接上的 HTTPS 都会阻止这种情况。 HTTPS 还可以防止任何类型的 DNS 劫持,这些劫持可能会欺骗 Pi 将 APIKey 发送到虚假主机(从而窃取它)。
除此之外,您的 API key 是控制访问的 secret ,只要它在两端的存储和运输过程中都受到保护,并且很难猜测,就可以了。
关于javascript - 在我自己的服务器上进行非常简单的身份验证,可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57262893/