温度传感器和Web服务器泛滥

时间:2015-09-02 14:57:17

标签: security http web-applications arduino

我无法找到一个很好的答案。

我有一些温度传感器(Arduinos)通过GET HTTP请求将数据发送到我的网络服务器。

在每个请求中,温度都存储在数据库中,其中包含传感器的ID和日期。

现在,我是一个坏人,我发现了GET请求的结构。我做了一堆GET请求来充斥网络服务器(最糟糕的情况)或记录不良温度数据(稍微好一点)。

如何防止这种情况?

我正在考虑为传感器定义一个唯一的密码,以及"验证"它通过POST请求...但如何实现这一目标?在请求期间,这个号码怎么不被盗?

任何阅读建议?

2 个答案:

答案 0 :(得分:0)

也许你可以:

  1. 使用密钥对事务的整个或敏感部分进行哈希处理,这样只有正确的密钥才能解析服务器上的请求。您可以通过真实的请求告诉小号。

  2. 在一个时间范围内限制服务器可以接受的请求数量始终是好的,从一个传感器,这将保护它免受DOS和泛滥。

  3. 跟踪发送的IP地址。你能从坏人那里告诉好的知识产权

  4. 关于arduinos加密的一些阅读: https://electronics.stackexchange.com/questions/355/encryption-libraruy-for-arduino

答案 1 :(得分:0)

使用密钥验证每个请求。

使用HMAC而不是SHA-256来创建参数的哈希值。

e.g。如果你的秘密是password1并且你的GET参数是sensorId=123&temperature=21,你可以计算出这些的SHA-256哈希值。

HMAC("password1", "sensorId=123&temperature=21")

this gives 75e9ad4ebfa22b2fca2f4bb24d23b56e6f6d32aa285bcc84f42a3116a7e02b6a,它使您的GET请求现在具有以下查询字符串:

sensorId=123&temperature=21&hash=75e9ad4ebfa22b2fca2f4bb24d23b56e6f6d32aa285bcc84f42a3116a7e02b6a

您可以使用相同的密钥验证这些值在服务器上提供相同的哈希值,从而减少任何篡改。

建议使用TLS(即https),因为这可以缓解任何重播攻击,并有助于您的网址格式被窃听者确定。您可能还想添加一个日期和时间字段,您还可以计算哈希值,以防止可以看到原始格式的攻击者重播GET请求。