javascript - 在我自己的服务器上进行非常简单的身份验证,可以吗?

标签 javascript python node.js authentication restify

我正在尝试实现非常简单的身份验证来更新服务器上的值。情况如下:

我有一个连接到树莓派的门传感器。每次触发传感器(“打开”或“关闭”)时,我都会向位于“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/

相关文章:

javascript - Visual Studio 代码中未检测到 Eslint 样式指南

node.js - 使用 Restify 进行版本控制的最佳文件夹结构

javascript - 如何在点击时在上/左/右/下方向滑动一个div

javascript - 如何将数组值拆分为新行 - jquery

Python - 将元组列表水平写入文本文件

python - 使用我自己的 gensalt() - 它足够安全吗?

Python——检查对象是否是某个模块中任何类的实例

javascript - 删除多个 JSON 对象的键/值对

javascript - 启用/禁用动态 Bootstrap 工具提示

javascript - 如何从数组中获取上一个和下一个 id