嵌入式系统的轻量级Web身份验证

5
我正在处理一个略微晦涩的项目,需要在一个小型/慢速嵌入式微控制器(没有操作系统)中实现一些基本身份验证。该设备通过串口提供了几个网页,然后由我们无法控制的硬件将其喷出到IP网络上。
服务器代码(例如nweb节食版)接收HTTP GET / POST请求并输出页面,并相应地更改其设置。
我们需要某种方式来验证用户登录/会话,以便我们不允许人们查看他们不应该看到的数据或更改设置。
该设备不打算直接暴露在互联网上或完全无法被严重黑客攻击(网络安全/分离是客户的问题*),安全要求更多地是为了防止低级别人员触摸blinkenlights ;)
由于空间/处理能力不足(假设我们有约2k的代码空间和不多的MHz),我们无法实现诸如SSL之类的东西,但至少要比标准的 HTTP访问控制好。
我们可以处理GET、POST和设置/读取cookie数据。我们的微控制器确实具有一个不错的加密标准硬件随机数生成器,如果有任何帮助的话。
客户真正应该将设备挂在自己的网络上,物理上与其他任何东西隔离或至少防火墙保护。但是嘿,如果这对波音公司有效的话...
1个回答

1

如果您只想保护免受访问: 每当有GET请求时,请查找密码的cookie。 如果未设置cookie,则发送一个HTML登录表单,该表单将密码POST到服务器。 如果服务器使用正确的密码获取了POST数据,则发送一个“已登录”页面,该页面将COOKIE设置为密码。然后,任何登录(显然是正确的密码)的人都将在所有未来的GET请求中设置cookie。从未登录过的人将始终看到登录页面。您可以通过设置两个cookie值来“隐藏”它:一个随机数和随机数与密码的XOR。这样,客户端将无法弄清楚cookie中的值。如果您进一步使用XOR并说客户端IP,则客户端将无法将cookie复制到其他计算机上。服务器始终能够撤消所有操作并从随机数和其他cookie值中找出密码/IP。

如果您想要简单的加密,可以在JavaScript中使用XMLHTTPREQUESTS。让服务器使用简单的伪随机数生成器(或简单的XOR obsfuncitation等)加密数据,并让客户端在JavaScript中反向执行相同的操作。您可以让服务器加密除index.html之外的每个页面,在index.html中,您可以使用JavaScript XMLHTTPREQUESTS其他页面并对其进行解密,然后使用innerHTML或其他方法将内容放入div中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接