【问题标题】:Very simple authentication on my own server, is this okay? [closed]在我自己的服务器上进行非常简单的身份验证,可以吗? [关闭]
【发布时间】:2019-12-07 07:52:42
【问题描述】:

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

我有一个连接到树莓派的门传感器。每次触发传感器(“打开”或“关闭”)时,我都会向位于“api.xxxxxx.com”的 Digital Ocean 液滴发送一个 POST 请求,该液滴指向一个 restify 服务器。 POST 请求正文包含传感器状态、时间戳和 API 密钥。 RESTify 服务器还有一个名为“constants.js”的文件,其中包含相同的 API 密钥。如果从 RPi 发送的 API 密钥与我的 droplet 上的常量文件中的密钥相同,则它允许更新值(最新状态/时间)。如果没有,它只会发回一条错误消息。

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

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

我也不希望任何人能够访问我的 droplet 或树莓派,所以如果我正确设置 SSH,我也看不到它(文件中的 API 密钥)是如何泄露的。

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

【问题讨论】:

  • 为什么不使用 HTTPS?听起来您正在尝试重新发明运输安全。
  • @Brad 我不确定你的意思。我的站点 API 已通过 HTTPS 保护。
  • 嗯,你很容易受到网络窥探。如果有人可以窥探其中一个网络链接,那么他们就可以窃取 API 密钥,并可以免费使用您的服务。两个链接上的 HTTPS 都会阻止这种情况。除此之外,您的 API 密钥是您控制访问的秘密,只要它在存储和传输过程中都是安全的,并且足够难以猜测,您就可以了。
  • @jfriend00 有趣!感谢您提供信息。
  • 没关系 - 只需构建它。永远不要担心以“完全正确的方式”做事,因为 99% 的时间它们只是个人项目,没人会看到。最终还是要学习正确的技术,但不要在刚学习时过度强调它们。建造东西!弄坏东西!了解更多!

标签: javascript python node.js authentication restify


【解决方案1】:

好吧,您很容易受到网络窥探的攻击。如果有人可以窥探其中一个网络链接,那么他们就可以窃取 API 密钥,并可以免费使用您的服务。

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

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

【讨论】:

    猜你喜欢
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 2020-10-11
    • 2012-05-29
    相关资源
    最近更新 更多