我在局域网内的 ESP8266 微控制器上设置了一个 Web 服务器。发送到此设备的 HTTP GET 请求可以打开和关闭电源插座,我计划在家里部署几个这样的设备。
此 LAN 使用标准互联网盒(路由器+调制解调器)连接到互联网。我想阻止 LAN 外部的任何人(包括互联网上的任何人)向微控制器发送任何内容。
假设别人无法破解我受 WPA-PSK 保护的 Wifi,我的设置是否构成令人担忧的安全漏洞?任何人破解我的 DIY 智能插座有多难?
答案1
虽然外部的任何人都不可能直接访问服务器(只要你不在路由器上转发任何端口),但你还是会受到类似以下攻击的攻击:跨站请求伪造。例如,如果有人向您发送了 HTML 格式的电子邮件消息(或让您加载网页,或...),其中加载了内联图像http://192.168.1.50/control?outlet=all&action=off
(或其 IP 地址和语法),您的邮件客户端将尝试从该 URL 加载图像,并且您的出口将关闭(或其他)。
因此,如果您有足够了解您网络设置的极客朋友,请做好被恶作剧的准备。实际上,您还应该做好随机 XSRF 攻击的准备,这些攻击会试图利用您可能拥有或可能没有的其他随机设备;如果控制器的 Web 服务器被其中任何一个搞糊涂了,他们可能会意外破坏它。
[更新] 更好地保护这一点将在很大程度上取决于 Web 服务器具有哪些加密功能——我在快速搜索中没有看到太多信息,所以我不确定它能做什么。最简单的方法是向请求添加一个密码变量。这不是特别安全,因为它会在线路上可见,存储在客户端的历史记录中并记录在服务器上等,但总比没有好(也比使用奇怪的语法好,因为它很容易更改)。做不是使用与其他密码相同的密码。
从 GET 切换到 POST 也会有所帮助,特别是因为 HTTP 标准规定 GET 请求不应该改变服务器的状态——也就是说,客户端根据其缓存的状态等来发送/不发送 GET 请求应该是安全的。使用 HTTPS 会更有帮助(如果服务器支持的话)。使用 WebDAV 摘要身份验证(而不是密码字符串)也很好(同样,如果服务器支持的话),但您需要添加某种针对重放攻击的保护才能真正有效。
答案2
尽管一切皆有可能,但如果您没有通过端口转发映射任何端口(有时称为虚拟服务器,尤其是 80、443 和 8080,或您的 Web 服务器使用的任何端口……来自 LAN 外部的攻击通过您的路由器到达该设备的可能性接近于零。
但同样,在没有更彻底的安全审查之前,不要将此视为最终答案。有志者事竟成,无论你采取何种预防措施。