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

Very simple authentication on my own server, is this okay?

我正在尝试实施非常简单的身份验证来更新我服务器上的值。情况是这样的:

我有一个连接到 raspberry pi 的门传感器。每次触发传感器('Opened' 或 'Closed')时,我都会向位于 'api.xxxxxx.com' 的 Digital Ocean 水滴发送一个 POST 请求,它指向一个 restify 服务器。 POST 请求正文包含传感器状态、时间戳和 API 键。 RESTify 服务器还有一个名为 'constants.js' 的文件,其中包含相同的 API 键。如果从 RPi 发送的 API 密钥与我的 Droplet 上常量文件中的密钥相同,它允许更新值(最新的 state/time)。如果不是,它只是发回一条错误消息。

API 密钥是通过 SHA3-256 发送的密码。

这个方案适合我正在做的事情吗?我唯一能想到的是,如果有人找到了端点,他们可能会向它发送垃圾邮件请求,但除此之外别无他法。 API 密钥(在我的本地 raspberry pi 和 droplet 上)保存在不同的文件中并从 git 中排除,因此查看 git 文件不会显示任何内容。

我不希望任何人访问我的 Droplet 或 raspberry pi,所以如果我正确设置 SSH,我看不到它是如何(文件中的 API 键) 也可能被泄露。

编辑:忘了说我在 Raspberry Pi 上使用 Python 发送 POSTs。 Droplet 是 运行 RESTify 服务器 (JS)。

嗯,你很容易受到网络窥探。如果任何人都可以窥探任何一个网络链接,那么他们就可以窃取 API 密钥并可以免费使用您的服务。

两个链接上的 HTTPS 会阻止这种情况。 HTTPS 还可以防止任何类型的 DNS 劫持,这种劫持可能会诱使 Pi 将 APIKey 发送给虚假主机(从而以这种方式窃取它)。

除此之外,您的 API 密钥是您控制访问的秘密,只要它在两端的存储和传输过程中都是安全的,并且足够难以猜测,就可以了。